Am 16.09.26 um 09:08 schrieb Collin Funk: > Hi Tobias, > > tpowa via GNU coreutils Bug Reports <[email protected]> writes: > >> while packaging for Arch Linux, this error on checks bumps up: >> >> FAIL test-strerrorname_np (exit status: 139) >> >> Thanks for your attention. > Thanks for the report and the test-suite.log! I see you are on Linux > 7.2. > > I ran into this on Fedora 44 as well, and it confused me a bit [1] [2]. > I'm not 100% certain, but I suspect Fedora needs to rebuild glibc; > likewise for Arch Linux. I'll share my understanding of the issue, and > you can let me know what you think. > > Linux 7.2 added a new error number to all architectures named EFTYPE > [3]. This has existed on the BSDs and macOS for a long time. Therefore, > programs such as this test will expect strerrorname_np to return a > string for the error if it is defined. Here is where that test crashes: > > $ gnulib-tool --create-testdir --dir testdir1 strerrorname_np > $ cd testdir1 > $ ./configure > $ make check > ../build-aux/test-driver: line 119: 396693 Segmentation fault > (core dumped) "$@" >> "$log_file" 2>&1 > FAIL: test-strerrorname_np > $ gdb ./gltests/test-strerrorname_np > (gdb) run > (gdb) bt > #0 __strcmp_avx2 () at ../sysdeps/x86_64/multiarch/strcmp-avx2.S:283 > #1 0x0000000000400ea2 in streq (__s1=<optimized out>, __s2=0x4045d7 > "EFTYPE") at ../gllib/string.h:1370 > #2 main () at test-strerrorname_np.c:490 > (gdb) list test-strerrorname_np.c:488,491 > 488 /* Mac OS X, FreeBSD, NetBSD, OpenBSD, Minix, Cygwin */ > 489 #if defined EFTYPE > 490 ASSERT (streq (strerrorname_np (EFTYPE), "EFTYPE")); > 491 #endif > > Gnulib doesn't replace strerrorname_np since it expects it to handle all > of the error numbers supported by the system, as the function is > documented to do [4]. This is true, apparently, until Linux decides to > add an error number that other platforms have historically supported. > > The strerrorname_np function, and related functions, use an error list > defined in sysdeps/gnu/errlist.h from glibc. Here is where EFTYPE is > defined: > > #ifdef EFTYPE > _S(EFTYPE, N_("Inappropriate file type or format")) > #endif > > So, I suspect your glibc was built against Linux 7.1 headers where this > errno isn't defined. Therefore, the error string does not exist, and > strerrorname_np returns a NULL pointer, which is then dereferenced by > the test. Do you know whether that is the case? > > Collin > > [1] > https://inbox.sourceware.org/libc-alpha/[email protected]/T/#m873e2fbf61fafaec6c9ad226d592d607bcffeecd > [2] > https://inbox.sourceware.org/libc-alpha/[email protected]/T/#m791fba3eaad3ef2f38c813a63dacac715e7325a8 > [3] > https://github.com/torvalds/linux/commit/cf1b04aaef8b83f668fac10bfc4d4d76ba6e6fa1 > [4] https://manpages.debian.org/testing/manpages-dev/strerrorname_np.3.en.html
Hi Collin, Thanks for your hint. Yes you are right, our glibc was built against 7.1. Best regards tpowa -- Tobias Powalowski Arch Linux Developer (tpowa) https://www.archlinux.org [email protected] Archboot Developer https://archboot.com
