Am Mittwoch, 20. Januar 2021, 22:12:30 EET schrieb Andreas K. Hüttel: > > This patch just passes the waitid status directly back to the guest. > > This works at least as well as the previous versions, so ++ from me. > > Will do more testing over the next days to see if it maybe also improves the > additional oddities I observed. >
So the patch is good since it clearly resolves the linked bug. However, something else is still broken (maybe related; unchanged compared to the previous patch version). I keep seeing hanging "qemu-riscv32 /bin/bash ..." processes using 100% cpu. If I attach strace (on the host arch x86-64) to qemu, I see an infinite loop: waitid(P_ALL, -1, {}, WNOHANG|WEXITED, NULL) = 0 rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], NULL, 8) = 0 rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], NULL, 8) = 0 rt_sigprocmask(SIG_SETMASK, [CHLD], NULL, 8) = 0 rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], NULL, 8) = 0 rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], NULL, 8) = 0 rt_sigprocmask(SIG_SETMASK, [CHLD], NULL, 8) = 0 waitid(P_ALL, -1, {}, WNOHANG|WEXITED, NULL) = 0 rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], NULL, 8) = 0 rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], NULL, 8) = 0 rt_sigprocmask(SIG_SETMASK, [CHLD], NULL, 8) = 0 rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], NULL, 8) = 0 rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], NULL, 8) = 0 rt_sigprocmask(SIG_SETMASK, [CHLD], NULL, 8) = 0 ... Unfortunately I do not have a simple reproducer. This is somewhere in the middle of our build system... Otherwise, I can re-build glibc, gcc, binutils, make in the qemu chroot without obvious problems, with one striking strange detail - "make" refuses to run more than one concurrent process (even with MAKEOPTS="-j9"). Something is off there. -- Andreas K. Hüttel dilfri...@gentoo.org Gentoo Linux developer (council, qa, toolchain, base-system, perl, libreoffice)
signature.asc
Description: This is a digitally signed message part.