#916276 glibc: Please add prelimenary patch to fix regression on qemu-user

Package:
src:glibc
Source:
glibc
Submitter:
John Paul Adrian Glaubitz
Date:
2021-12-30 19:36:05 UTC
Severity:
normal
Tags:
#916276#5
Date:
2018-12-12 13:38:29 UTC
From:
To:
Hi!

In 298d0e3129c0b5137f4989275b13fe30d0733c4d ("Consolidate Linux getdents{64}
implementation"), upstream made changes to the getdents{64} implementation
which breaks glibc on qemu-user.

The result of that is that applications like dash behave erratically, such that
for example pattern expansion no longer works. This means that "*" is not expanded
to filenames:

$ ls -l old/
total 148
-rw-r--r-- 1 glaubitz fbedv 16188 Jun 21  2003 chardraw.c
-rw-r--r-- 1 glaubitz fbedv  7922 Jun 21  2003 fillpoly.c
-rw-r--r-- 1 glaubitz fbedv   948 Jun 21  2003 readme
-rw-r--r-- 1 glaubitz fbedv 31860 Jun 21  2003 to_atari.c
-rw-r--r-- 1 glaubitz fbedv 13093 Jun 21  2003 to_eps.c
-rw-r--r-- 1 glaubitz fbedv  6631 Jun 21  2003 to_mf.c
-rw-r--r-- 1 glaubitz fbedv  3261 Jun 21  2003 to_pbm.c
-rw-r--r-- 1 glaubitz fbedv 12854 Jun 21  2003 to_pcx.c
-rw-r--r-- 1 glaubitz fbedv 10657 Jun 21  2003 to_pdf.c
-rw-r--r-- 1 glaubitz fbedv  6697 Jun 21  2003 to_pm.c
-rw-r--r-- 1 glaubitz fbedv  9463 Jun 21  2003 to_x11a.c
-rw-r--r-- 1 glaubitz fbedv 10405 Jun 21  2003 to_x11.c
$ ls -l old/*
/bin/ls: cannot access 'old/*': No such file or directory
$

dash is just one example. Other affected applications are cmake or qmake.
The attached prelimenary patch by James Clarke fixes the problem for me.

Thanks,
Adrian

#916276#12
Date:
2020-09-17 21:44:51 UTC
From:
To:
Hello glibc maintainers,

would you please consider including this patch to unbreak things
(fix a regression) until the triangle between qemu, Linux and glibc
has figured out how to best deal with it?

Thanks,
//mirabilos

#916276#17
Date:
2020-09-19 13:14:17 UTC
From:
To:
Hi,

The patch is basically replacing the getdents64 syscall by the getdents
one. This means that applying this patch would make debian differ with
regards to other distributions in the syscalls that are used for the
same binaries. In turns it is likely going to affect binaries that are
using seccomp and only allow the getdents64 and not the getdents one.

I therefore don't think this is not reasonable to include such a fix on
our glibc. It would fix the qemu-user case but likely break random
binaries.

Aurelien

#916276#22
Date:
2020-09-19 19:51:28 UTC
From:
To:
Hi,

ah, indeed.

OK, thanks for the explanation.

Let’s hope this can be fixed, somehow, in qemu itself and/or the kernel.

bye,
//mirabilos

No, the only way I've seen them sold is for $40 with a free OpenBSD CD.
	-- Haroon Khalid and Steve Shockley in gmane.os.openbsd.misc