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