Package: src:fakeroot
Version: 1.26-1
Control: tags -1 ftbfs

--

Dear maintainer,
fakeroot fails to build on ppc64el since 1.26-1
https://buildd.debian.org/status/fetch.php?pkg=fakeroot&arch=ppc64el&ver=1.26-1&stamp=1630982822&raw=0

Backtrace from the core file :
---
Core was generated by `chown -R daemon:sys 2 '.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x000005e13c212284 in 0000001b.plt_call.fdopendir@@GLIBC_2.17 ()
(gdb) bt
#0  0x000005e13c212284 in 0000001b.plt_call.fdopendir@@GLIBC_2.17 ()
#1  0x000005e13c220fd4 in opendirat (dir_fd=-100, dir=0x5e13fb347b0 "2", 
extra_flags=32768, pnew_fd=0x7fffc6e5cab0) at lib/opendirat.c:44
#2  0x000005e13c21cb74 in fts_build (sp=0x5e13fb33ce0, type=3) at lib/fts.c:1340
#3  0x000005e13c21be60 in rpl_fts_read (sp=0x5e13fb33ce0) at lib/fts.c:940
#4  0x000005e13c214ca0 in chown_files (files=0x7fffc6e5d210, bit_flags=1040, 
uid=1, gid=3, required_uid=4294967295, required_gid=4294967295, 
chopt=0x7fffc6e5cd00) at src/chown-core.c:531
#5  0x000005e13c21349c in main (argc=4, argv=0x7fffc6e5d1f8) at src/chown.c:324
---

Bisecting the code I ended up with this commit : 
https://salsa.debian.org/clint/fakeroot/-/commit/f5e0a89ab6f0024f3d3bec5fd9cf631676b44f6c
from which things start to fail.
Especially the openat() function.
What I noticed also is that lowering optimization to O0 makes the test
work.

Simple way to reproduce is on directories : 
---
mkdir bla
LD_PRELOAD=./obj-sysv/.libs/libfakeroot-0.so /bin/rm -fr bla
---
Each time fdopendir seg fault with the fd coming from openat right
before.

Not sure what optimization breaks, I just tried changing openat() to
modify some aggressive optimization on that function and it helped.

---
--- a/libfakeroot.c
+++ b/libfakeroot.c
@@ -2596,7 +2596,11 @@
 #endif
 
 #ifdef HAVE_OPENAT
+#if defined(__powerpc__) && defined(__powerpc64__) && __BYTE_ORDER__ == 
__ORDER_LITTLE_ENDIAN__
+static int openat(int dir_fd, const char *pathname, int flags, ...)
+#else
 int openat(int dir_fd, const char *pathname, int flags, ...)
+#endif
 {
        mode_t mode;
---

Hoping you'll get more ideas on this


Regards,


F.

Attachment: signature.asc
Description: PGP signature

Reply via email to