Package: fakeroot
Version: 1.34-1
Severity: critical

Hello,

Assigning to fakeroot for now, but not sure it's not something for ftp.d.o (a
binNMU) or libc6.

Today, after an upgrade, I am not able to build packages with sbuild as
it hanks with this process tree:

(TZ is CEST)

peb         8859  0.1  0.0  24048 17644 pts/4    Ss   14:15   0:09  |   \_ zsh
peb       224642  3.2  0.1  37664 32640 pts/4    S+   16:24   0:00  |   |   \_ 
/usr/bin/perl /usr/bin/sbuild -As --source-only-changes
peb       224665  0.0  0.0   2596  1536 pts/4    S+   16:24   0:00  |   |       
\_ /bin/sh /usr/bin/fakeroot debian/rules clean
peb       224680  0.0  0.0   6196  2304 pts/4    S+   16:24   0:00  |   |       
    \_ /usr/bin/make -f debian/rules clean

In parallel, one can find a faked-sysv process eating all a CPU resources.

peb       225847  100  0.0   2440   648 pts/4    R+   16:25   0:02  \_ 
/usr/bin/faked-sysv

When running make -f debian/rules clean directly, everything works well.

Running it through fakeroot with strace gives:

❯ LC_ALL=C strace /bin/sh /usr/bin/fakeroot 
~/git/cgg/projects/OaaSiS/packaging/libbnxtre/libbnxtre/debian/rules clean
execve("/bin/sh", ["/bin/sh", "/usr/bin/fakeroot", 
"/home/peb/git/cgg/projects/OaaSi"..., "clean"], 0x7ffd1e5d6348 /* 66 vars */) 
= 0
brk(NULL)                               = 0x55d974431000
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 
0x7f07e4275000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
newfstatat(3, "", {st_mode=S_IFREG|0644, st_size=103847, ...}, AT_EMPTY_PATH) = 0
mmap(NULL, 103847, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f07e425b000
close(3)                                = 0
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0P~\2\0\0\0\0\0"..., 832) 
= 832
pread64(3, "\6\0\0\0\4\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0"..., 
784, 64) = 784
newfstatat(3, "", {st_mode=S_IFREG|0755, st_size=1933688, ...}, AT_EMPTY_PATH) 
= 0
pread64(3, "\6\0\0\0\4\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0"..., 
784, 64) = 784
mmap(NULL, 1985936, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f07e4076000
mmap(0x7f07e409c000, 1404928, PROT_READ|PROT_EXEC, 
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x26000) = 0x7f07e409c000
mmap(0x7f07e41f3000, 348160, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 
0x17d000) = 0x7f07e41f3000
mmap(0x7f07e4248000, 24576, PROT_READ|PROT_WRITE, 
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1d1000) = 0x7f07e4248000
mmap(0x7f07e424e000, 52624, PROT_READ|PROT_WRITE, 
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f07e424e000
close(3)                                = 0
mmap(NULL, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 
0x7f07e4073000
arch_prctl(ARCH_SET_FS, 0x7f07e4073740) = 0
set_tid_address(0x7f07e4073a10)         = 233801
set_robust_list(0x7f07e4073a20, 24)     = 0
rseq(0x7f07e4074060, 0x20, 0, 0x53053053) = 0
mprotect(0x7f07e4248000, 16384, PROT_READ) = 0
mprotect(0x55d9731b3000, 8192, PROT_READ) = 0
mprotect(0x7f07e42a7000, 8192, PROT_READ) = 0
prlimit64(0, RLIMIT_STACK, NULL, {rlim_cur=8192*1024, 
rlim_max=RLIM64_INFINITY}) = 0
munmap(0x7f07e425b000, 103847)          = 0
getuid()                                = 1000
getgid()                                = 1000
getpid()                                = 233801
rt_sigaction(SIGCHLD, {sa_handler=0x55d9731a8550, sa_mask=~[RTMIN RT_1], 
sa_flags=SA_RESTORER, sa_restorer=0x7f07e40b3580}, NULL, 8) = 0
geteuid()                               = 1000
getrandom("\x87\x75\x90\x03\xa9\x28\xe2\x59", 8, GRND_NONBLOCK) = 8
brk(NULL)                               = 0x55d974431000
brk(0x55d974452000)                     = 0x55d974452000
getppid()                               = 233798
newfstatat(AT_FDCWD, 
"/home/peb/git/cgg/projects/OaaSiS/packaging/libbnxtre/libbnxtre", 
{st_mode=S_IFDIR|0755, st_size=4096, ...}, 0) = 0
newfstatat(AT_FDCWD, ".", {st_mode=S_IFDIR|0755, st_size=4096, ...}, 0) = 0
openat(AT_FDCWD, "/usr/bin/fakeroot", O_RDONLY) = 3
fcntl(3, F_DUPFD, 10)                   = 10
close(3)                                = 0
fcntl(10, F_SETFD, FD_CLOEXEC)          = 0
geteuid()                               = 1000
getegid()                               = 1000
rt_sigaction(SIGINT, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
rt_sigaction(SIGINT, {sa_handler=0x55d9731a8550, sa_mask=~[RTMIN RT_1], 
sa_flags=SA_RESTORER, sa_restorer=0x7f07e40b3580}, NULL, 8) = 0
rt_sigaction(SIGQUIT, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
rt_sigaction(SIGQUIT, {sa_handler=SIG_DFL, sa_mask=~[RTMIN RT_1], 
sa_flags=SA_RESTORER, sa_restorer=0x7f07e40b3580}, NULL, 8) = 0
rt_sigaction(SIGTERM, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
rt_sigaction(SIGTERM, {sa_handler=SIG_DFL, sa_mask=~[RTMIN RT_1], 
sa_flags=SA_RESTORER, sa_restorer=0x7f07e40b3580}, NULL, 8) = 0
read(10, "#!/bin/sh\n\n# This script first s"..., 8192) = 3995
pipe2([3, 4], 0)                        = 0
clone(child_stack=NULL, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, 
child_tidptr=0x7f07e4073a10) = 233806
close(4)                                = 0
read(3, "", 128)                        = 0
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=233806, si_uid=1000, 
si_status=4, si_utime=0, si_stime=0} ---
rt_sigreturn({mask=[]})                 = 0
close(3)                                = 0
wait4(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 4}], 0, NULL) = 233806
wait4(-1, 0x7ffda7ce753c, WNOHANG, NULL) = -1 ECHILD (No child processes)
pipe2([3, 4], 0)                        = 0
clone(child_stack=NULL, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, 
child_tidptr=0x7f07e4073a10) = 233807
close(4)                                = 0
read(3, " -- '/home/peb/git/cgg/projects/"..., 128) = 91
read(3, "", 128)                        = 0
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=233807, si_uid=1000, 
si_status=0, si_utime=0, si_stime=0} ---
rt_sigreturn({mask=[]})                 = 0
close(3)                                = 0
wait4(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0, NULL) = 233807
wait4(-1, 0x7ffda7ce74ec, WNOHANG, NULL) = -1 ECHILD (No child processes)
pipe2([3, 4], 0)                        = 0
clone(child_stack=NULL, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, 
child_tidptr=0x7f07e4073a10) = 233808
close(4)                                = 0
read(3, "/usr/lib/x86_64-linux-gnu/libfak"..., 128) = 84
read(3, "", 128)                        = 0
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=233808, si_uid=1000, 
si_status=0, si_utime=0, si_stime=0} ---
rt_sigreturn({mask=[]})                 = 0
close(3)                                = 0
wait4(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0, NULL) = 233808
wait4(-1, 0x7ffda7ce757c, WNOHANG, NULL) = -1 ECHILD (No child processes)
faccessat2(AT_FDCWD, 
"/usr/lib/x86_64-linux-gnu/libfakeroot/libfakeroot-sysv.so", R_OK, AT_EACCESS) 
= 0
faccessat2(AT_FDCWD, "/usr/lib64/libfakeroot/libfakeroot-sysv.so", R_OK, 
AT_EACCESS) = -1 ENOENT (No such file or directory)
faccessat2(AT_FDCWD, "/usr/lib32/libfakeroot/libfakeroot-sysv.so", R_OK, 
AT_EACCESS) = -1 ENOENT (No such file or directory)
pipe2([3, 4], 0)                        = 0
clone(child_stack=NULL, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, 
child_tidptr=0x7f07e4073a10) = 233811
close(4)                                = 0
read(3, "156678863:233813\n", 128)      = 17
read(3, "", 128)                        = 0
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=233811, si_uid=1000, 
si_status=0, si_utime=0, si_stime=0} ---
rt_sigreturn({mask=[]})                 = 0
close(3)                                = 0
wait4(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0, NULL) = 233811
wait4(-1, 0x7ffda7ce753c, WNOHANG, NULL) = -1 ECHILD (No child processes)
pipe2([3, 4], 0)                        = 0
clone(child_stack=NULL, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, 
child_tidptr=0x7f07e4073a10) = 233814
close(4)                                = 0
read(3, "156678863\n", 128)             = 10
read(3, "", 128)                        = 0
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=233814, si_uid=1000, 
si_status=0, si_utime=0, si_stime=0} ---
rt_sigreturn({mask=[]})                 = 0
close(3)                                = 0
wait4(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0, NULL) = 233814
wait4(-1, 0x7ffda7ce753c, WNOHANG, NULL) = -1 ECHILD (No child processes)
pipe2([3, 4], 0)                        = 0
clone(child_stack=NULL, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, 
child_tidptr=0x7f07e4073a10) = 233817
close(4)                                = 0
read(3, "233813\n", 128)                = 7
read(3, "", 128)                        = 0
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=233817, si_uid=1000, 
si_status=0, si_utime=0, si_stime=0} ---
rt_sigreturn({mask=[]})                 = 0
close(3)                                = 0
wait4(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0, NULL) = 233817
wait4(-1, 0x7ffda7ce753c, WNOHANG, NULL) = -1 ECHILD (No child processes)
rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], NULL, 8) = 0
vfork()                                 = 233820
rt_sigprocmask(SIG_SETMASK, [], ~[KILL STOP RTMIN RT_1], 8) = 0
wait4(-1,

stracing the corresponding faked-sysv gives:

 ❯ while true; do
pid="$(ps aux|grep [f]aked-sysv|awk '{print $2}')"
if [ ! -z "${pid}" ]; then
echo "found ${pid}"
LC_ALL=C.UTF-8 strace -p "${pid}"
fi
done
found 230857
strace: Process 230857 attached
close(200453)                           = -1 EBADF (Bad file descriptor)
close(200454)                           = -1 EBADF (Bad file descriptor)
close(200455)                           = -1 EBADF (Bad file descriptor)
close(200456)                           = -1 EBADF (Bad file descriptor)
close(200457)                           = -1 EBADF (Bad file descriptor)
close(200458)                           = -1 EBADF (Bad file descriptor)
close(200459)                           = -1 EBADF (Bad file descriptor)
close(200460)                           = -1 EBADF (Bad file descriptor)
close(200461)                           = -1 EBADF (Bad file descriptor)
close(200462)                           = -1 EBADF (Bad file descriptor)
close(200463)                           = -1 EBADF (Bad file descriptor)
close(200464)                           = -1 EBADF (Bad file descriptor)
close(200465)                           = -1 EBADF (Bad file descriptor)
close(200466)                           = -1 EBADF (Bad file descriptor)
close(200467)                           = -1 EBADF (Bad file descriptor)
close(200468)                           = -1 EBADF (Bad file descriptor)
close(200469)                           = -1 EBADF (Bad file descriptor)
close(200470)                           = -1 EBADF (Bad file descriptor)
close(200471)                           = -1 EBADF (Bad file descriptor)
close(200472)                           = -1 EBADF (Bad file descriptor)
close(200473)                           = -1 EBADF (Bad file descriptor)
close(200474)                           = -1 EBADF (Bad file descriptor)
close(200475)                           = -1 EBADF (Bad file descriptor)
close(200476)                           = -1 EBADF (Bad file descriptor)
close(200477)                           = -1 EBADF (Bad file descriptor)
close(200478)                           = -1 EBADF (Bad file descriptor)
close(200479)                           = -1 EBADF (Bad file descriptor)
close(200480)                           = -1 EBADF (Bad file descriptor)
close(200481)                           = -1 EBADF (Bad file descriptor)
close(200482)                           = -1 EBADF (Bad file descriptor)
close(200483)                           = -1 EBADF (Bad file descriptor)
close(200484)                           = -1 EBADF (Bad file descriptor)
close(200485)                           = -1 EBADF (Bad file descriptor)
close(200486)                           = -1 EBADF (Bad file descriptor)
close(200487)                           = -1 EBADF (Bad file descriptor)
close(200488)                           = -1 EBADF (Bad file descriptor)
close(200489)                           = -1 EBADF (Bad file descriptor)
close(200490)                           = -1 EBADF (Bad file descriptor)
close(200491)                           = -1 EBADF (Bad file descriptor)
close(200492)                           = -1 EBADF (Bad file descriptor)
close(200493)                           = -1 EBADF (Bad file descriptor)
close(200494)                           = -1 EBADF (Bad file descriptor)
close(200495)                           = -1 EBADF (Bad file descriptor)
close(200496)                           = -1 EBADF (Bad file descriptor)
close(200497)                           = -1 EBADF (Bad file descriptor)
close(200498)                           = -1 EBADF (Bad file descriptor)
close(200499)                           = -1 EBADF (Bad file descriptor)
close(200500)                           = -1 EBADF (Bad file descriptor)
close(200501)                           = -1 EBADF (Bad file descriptor)
close(200502)                           = -1 EBADF (Bad file descriptor)
close(200503)                           = -1 EBADF (Bad file descriptor)
close(200504)                           = -1 EBADF (Bad file descriptor)
close(200505)                           = -1 EBADF (Bad file descriptor)
close(200506)                           = -1 EBADF (Bad file descriptor)
close(200507)                           = -1 EBADF (Bad file descriptor)
close(200508)                           = -1 EBADF (Bad file descriptor)
close(200509)                           = -1 EBADF (Bad file descriptor)
close(200510)                           = -1 EBADF (Bad file descriptor)
close(200511)                           = -1 EBADF (Bad file descriptor)
... and so on

I was not able to capture the strace from the beginning of faked-sysv, I guess
I could try to hook something on the fakeroot's fork+exec mechanism in order to
try grabbing it.

From IRC discussions on #debian-devel:

[2024-06-03 14:57:26] <dwfreed> the pattern of 1s in the binary representation 
of that number kind of suggests it's accidentally looking at a flags field
[2024-06-03 14:57:46] <dwfreed> 00000111000100010000010100001001
[2024-06-03 14:58:04] <mjt> I think it can be anything
[2024-06-03 14:59:07] <dwfreed> hex: 07110509
[2024-06-03 14:59:46] <Myon> ABI mismatch struct change somethiing
[2024-06-03 15:07:23] <peb> I guess we'd just need to rebuild fakeroot against 
sid?
[2024-06-03 15:09:08] <mjt> if it's an ABI mismatch, probably, but there's no 
reason for that
[2024-06-03 15:09:16] <mjt> for the mismatch that is
[2024-06-03 15:12:23] <dwfreed> a rebuild would be an easy way to test
[2024-06-03 15:58:42] <peb> binNMU?
[2024-06-03 15:59:45] <Sebastinas> If it is solved by a binNMU, something broke 
ABI.
[2024-06-03 16:02:00] <peb> considering the libtree if it's an ABI breakage 
it's libc6
[2024-06-03 16:02:15] <peb> but libc6 only saw deb releases recently
[2024-06-03 16:02:19] <peb> so...
[2024-06-03 16:02:56] <Sebastinas> aurel32: ^ any idea if a glibc change can 
cause this?
[2024-06-03 16:13:48] <schopin> It seems to be wrapping glibc functions that 
would be affected by the t64 transition.

libtree -vvv: 

libfakeroot-0.so 
└── libc.so.6 [ld.so.conf]
    └── ld-linux-x86-64.so.2 [ld.so.conf]

An hypothesis is that a rebuild against the current sid could solve the issue.
I will try that and report back.

Feel free to reassign.

-- System Information:
Debian Release: 12.5
  APT prefers stable-security
  APT policy: (990, 'stable-security'), (990, 'stable'), (500, 'stable-updates')
Architecture: amd64 (x86_64)

Kernel: Linux 6.1.0-17-amd64 (SMP w/8 CPU threads; PREEMPT)
Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8) (ignored: LC_ALL 
set to fr_FR.UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled

Versions of packages fakeroot depends on:
ii  libc6        2.36-9+deb12u7
ii  libfakeroot  1.31-1.2

fakeroot recommends no packages.

fakeroot suggests no packages.

-- no debconf information

Reply via email to