Hi! The attached test-sig.c is a slightly modified version of gnulib-tests/test-sigaction.c (<https://git.savannah.gnu.org/cgit/gnulib.git/tree/tests/test-sigaction.c>) as used by findutils.
When compiled statically on Debian/Hurd with Debian's glibc it succeeds but when using Guix's libc it fails. I have bisected the problem to be in sigaction.o: when linking with sigaction.o from Debian's libcrt.a it passes, when using Guix's sigaction.o it fails. Problem solved, you would say? When trying to debug this in gdb, I cannot seem to get past __kill, and wherever I put breakpoints (in __sigreturn and __sigreturn2), both the faulty and correct program behave apparently identical under gdb. Assuming that we're just missing some patch to sigreturn.c, but failing to find an obvious candidate I went to apply the Debian and Guix patch series and do some inventory. Guix is currently not applying/missing: proc_reauth.diff submitted-bind_umask2.diff tg-ifaddrs_v6.diff tg-libc_rwlock_recursive.diff tg-sendmsg-SCM_CREDS.diff tg-sysvshm.diff tg-thread-cancel.diff These are the diffs between guix's glibc on the hurd-team branch and debian 2.39-7 (20240825 is using 2.39-8...) with all patches applied: <https://dezyne.org/janneke/hurd/glibc-2.39-guix-hurd-team-to-debian-2.39-7.patch> and only the hurd-specific patches applied <https://dezyne.org/janneke/hurd/glibc-2.39-guix-hurd-team-to-debian-hurd-only.patch> There is no patch to sigreturn.c, and I also cannot see an obvious header being patched --8<---------------cut here---------------start------------->8--- diff --git a/config.h.in b/config.h.in diff --git a/hurd/hurd/fd.h b/hurd/hurd/fd.h diff --git a/hurd/sysvshm.h b/hurd/sysvshm.h diff --git a/sysdeps/generic/paths.h b/sysdeps/generic/paths.h diff --git a/sysdeps/mach/hurd/bits/errno.h b/sysdeps/mach/hurd/bits/errno.h diff --git a/sysdeps/mach/hurd/bits/ioctls.h b/sysdeps/mach/hurd/bits/ioctls.h diff --git a/sysdeps/mach/hurd/bits/posix_opt.h b/sysdeps/mach/hurd/bits/posix_opt.h diff --git a/sysdeps/mach/hurd/htl/pt-sysdep.h b/sysdeps/mach/hurd/htl/pt-sysdep.h diff --git a/sysdeps/mach/libc-lock.h b/sysdeps/mach/libc-lock.h --8<---------------cut here---------------end--------------->8--- Anyway, attached are the disassembled versions of Debian's and Guix's sigaction.o.d. Maybe some of you can spot the significant difference and where it might come from? Note: on our 32bit Hurd which uses the same patch set for glibc, the test runs fine. For now I have disabled running check on findutils...but I'm afraid this test will keep coming back and fail for every package that uses gnulib :-( So, any pointers highly appreciated! Greetings, Janneke
test-sig.c
Description: Binary data
sigreturn.o.d
Description: Binary data
sigreturn.o.d
Description: Binary data
-- Janneke Nieuwenhuizen <jann...@gnu.org> | GNU LilyPond https://LilyPond.org Freelance IT https://www.JoyOfSource.com | AvatarĀ® https://AvatarAcademy.com