On Wed, Sep 20, 2023 at 6:39 AM Andreas K. Huettel <dilfri...@gentoo.org> wrote: > > Hi Alistair, > > > It would be great to get a strace of the failure to narrow down what > > it is. From there it should be not too hard to find and fix. > > thanks a lot. Here's as much info as I could get with strace mechanisms. > > 1) What I did, without any tracing > > pinacolada ~ # qemu-riscv32 -L /var/lib/machines/riscv32 > /var/lib/machines/riscv32/bin/bash > pinacolada ~ # python > Python 3.11.5 (main, Aug 27 2023, 18:39:05) [GCC 12.3.1 20230623] on linux > Type "help", "copyright", "credits" or "license" for more information. > >>> > [1]+ Stopped python > ^C^C > pinacolada ~ # ^C > pinacolada ~ # fg > python > > pinacolada ~ # > exit > > * When I type Ctrl-Z at the python prompt, the terminal hangs. > * With several Ctrl-C I can get back to the riscv32 bash, and then python is > suspended in the background. > > * Now I did this again, first with qemu tracing system calls, then with > strace tracing qemu > * In both cases, the log starts when I type "python", and ends (with quickly > repeated output lines) > after pressing Ctrl-Z > > 2) > pinacolada ~ # QEMU_STRACE=1 qemu-riscv32 -L /var/lib/machines/riscv32 > /var/lib/machines/riscv32/bin/bash > (QEMU_STRACE is getting unset in my bashrc, so no subprocesses are traced) > > (...) > 2472050 write(2,0xe56c0,58)pinacolada ~ # = 58 > 2472050 Unknown syscall 413 > 2472050 read(0,0x2b2aa29b,1) = 1 > 2472050 Unknown syscall 413 > 2472050 write(2,0xe56c0,1)p = 1 > 2472050 Unknown syscall 413 > 2472050 read(0,0x2b2aa29b,1) = 1 > 2472050 Unknown syscall 413 > 2472050 write(2,0xe56c0,1)y = 1 > 2472050 Unknown syscall 413 > 2472050 read(0,0x2b2aa29b,1) = 1 > 2472050 Unknown syscall 413 > 2472050 write(2,0xe56c0,1)t = 1 > 2472050 Unknown syscall 413 > 2472050 read(0,0x2b2aa29b,1) = 1 > 2472050 Unknown syscall 413 > 2472050 write(2,0xe56c0,1)h = 1 > 2472050 Unknown syscall 413 > 2472050 read(0,0x2b2aa29b,1) = 1 > 2472050 Unknown syscall 413 > 2472050 write(2,0xe56c0,1)o = 1 > 2472050 Unknown syscall 413 > 2472050 read(0,0x2b2aa29b,1) = 1 > 2472050 Unknown syscall 413 > 2472050 write(2,0xe56c0,1)n = 1 > 2472050 Unknown syscall 413 > 2472050 read(0,0x2b2aa29b,1) = 1 > 2472050 write(2,0xe56c0,1) > = 1 > = 9050 write(2,0xe56c0,9) > 2472050 ioctl(0,TCSETSW,{c_iflag = ICRNL|IXON|IXOFF|IUTF8,c_oflag = > OPOST|ONLCR,c_cflag = B38400,CS8,CREAD,c_lflag = > ISIG|ICANON|ECHO|ECHOE|ECHOK|ECHOCTL|ECHOKE|IEXTEN,c_cc = "",c_line = ''}) = 0 > 2472050 rt_sigaction(SIGINT,0x2b2aa1bc,0x2b2aa244) = 0 > 2472050 rt_sigaction(SIGHUP,0x2b2aa1bc,0x2b2aa244) = 0 > 2472050 rt_sigaction(SIGALRM,0x2b2aa1bc,0x2b2aa244) = 0 > 2472050 rt_sigaction(SIGWINCH,0x2b2aa1bc,0x2b2aa244) = 0 > 2472050 rt_sigaction(SIGINT,0x2b2aa14c,0x2b2aa1d4) = 0 > 2472050 clock_gettime64(CLOCK_REALTIME_COARSE,0x2b2aa268) = 0 > ({tv_sec=1695154794,tv_nsec=760883171}) > 2472050 > statx(AT_FDCWD,".",AT_NO_AUTOMOUNT|AT_STATX_SYNC_AS_STAT,STATX_BASIC_STATS,0x2b2aaa78) > = 0 > 2472050 > statx(AT_FDCWD,"/usr/local/sbin/python",AT_NO_AUTOMOUNT|AT_STATX_SYNC_AS_STAT,STATX_BASIC_STATS,0x2b2aa998) > = -1 errno=2 (No such file or directory) > 2472050 > statx(AT_FDCWD,"/usr/local/bin/python",AT_NO_AUTOMOUNT|AT_STATX_SYNC_AS_STAT,STATX_BASIC_STATS,0x2b2aa998) > = -1 errno=2 (No such file or directory) > 2472050 > statx(AT_FDCWD,"/usr/sbin/python",AT_NO_AUTOMOUNT|AT_STATX_SYNC_AS_STAT,STATX_BASIC_STATS,0x2b2aa998) > = -1 errno=2 (No such file or directory) > 2472050 > statx(AT_FDCWD,"/usr/bin/python",AT_NO_AUTOMOUNT|AT_STATX_SYNC_AS_STAT,STATX_BASIC_STATS,0x2b2aa998) > = 0 > 2472050 > statx(AT_FDCWD,"/usr/bin/python",AT_NO_AUTOMOUNT|AT_STATX_SYNC_AS_STAT,STATX_BASIC_STATS,0x2b2aa8e8) > = 0 > 2472050 geteuid() = 0 > 2472050 getegid() = 0 > 2472050 getuid() = 0 > 2472050 getgid() = 0 > 2472050 > faccessat(AT_FDCWD,"/usr/bin/python",X_OK,AT_SYMLINK_NOFOLLOW|0x1da42089) = 0 > 2472050 > statx(AT_FDCWD,"/usr/bin/python",AT_NO_AUTOMOUNT|AT_STATX_SYNC_AS_STAT,STATX_BASIC_STATS,0x2b2aa8e8) > = 0 > 2472050 geteuid() = 0 > 2472050 getegid() = 0 > 2472050 getuid() = 0 > 2472050 getgid() = 0 > 2472050 > faccessat(AT_FDCWD,"/usr/bin/python",R_OK,AT_SYMLINK_NOFOLLOW|0x1da42089) = 0 > 2472050 rt_sigprocmask(SIG_BLOCK,NULL,0x2b2aabec,8) = 0 > 2472050 rt_sigprocmask(SIG_BLOCK,0x2b2aaaec,0x2b2aab6c,8) = 0 > 2472050 rt_sigaction(SIGTERM,0x2b2aa85c,0x2b2aa8e4) = 0 > 2472050 rt_sigprocmask(SIG_BLOCK,0x2b2aa98c,0x2b2aaa0c,8) = 0 > 2472050 rt_sigprocmask(SIG_SETMASK,0x2b2aaa0c,NULL,8) = 0 > 2472050 pipe2(0x5560d3f4,0) = 0 > 2472050 > clone(CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|0x11,child_stack=0x00000000,parent_tidptr=0x00000000,tls=0x00000000,child_tidptr=0x2b2d20c8) > = 2472055 > 2472050 rt_sigaction(SIGTERM,0x2b2aa85c,0x2b2aa8e4) = 0 > = 0 > 2472050 setpgid(2472055,2472055) = 0 > 2472055 set_robust_list(0x2b2d20cc,12) = 2472050 > rt_sigprocmask(SIG_SETMASK,0x2b2aab6c,-1 errno=38 (Function not > implemented)NULL, > 8) = 0 > 2472055 getpid() = 2472055 > 2472055 rt_sigprocmask(SIG_SETMASK,0x55616e24,NULL,8) = 0 > 2472050 rt_sigprocmask(SIG_BLOCK,0x2b2aaaac,0x2b2aab2c,8) = 0 > 2472050 close(3) = 0 > 2472050 close(4) = 0 > 2472055 rt_sigaction(SIGTSTP,0x2b2aa84c,0x2b2aa8d4) = 0 > 2472055 rt_sigaction(SIGTTIN,0x2b2aa84c,0x2b2aa8d4) = 0 > 2472055 rt_sigaction(SIGTTOU,0x2b2aa85c,0x2b2aa8e4) = 0 > 2472055 setpgid(2472055,2472055) = 0 > 2472055 rt_sigprocmask(SIG_BLOCK,0x2b2aa99c,0x2b2aaa1c,8) = 0 > 2472055 ioctl(255,TIOCSPGRP,2472055) = 0 > 2472055 rt_sigprocmask(SIG_SETMASK,0x2b2aaa1c,NULL,8) = 0 > 2472050 ioctl(255,TIOCGPGRP,0x2b2aaa78) = 0 (2472055)2472055 > close(4) = 0 > 2472050 rt_sigprocmask(SIG_SETMASK,0x2b2aab2c,NULL,2472055 > 8)read(3,0x2b2aaaeb,1) = 0 = > 0 > 2472055 close(3) = 0 > 2472050 rt_sigprocmask(SIG_BLOCK,0x2b2aabac,0x2b2aac2c,8) = 0 > 2472055 rt_sigaction(SIGHUP,0x2b2aaacc,NULL) = 0 > 2472055 rt_sigaction(SIGILL,0x2b2aaacc,NULL) = 0 > 2472055 rt_sigaction(SIGTRAP,0x2b2aaacc,NULL) = 0 > 2472055 rt_sigaction(SIGIOT,0x2b2aaacc,NULL) = 0 > 2472055 rt_sigaction(SIGFPE,0x2b2aaacc,NULL) = 0 > 2472055 rt_sigaction(SIGBUS,0x2b2aaacc,NULL) = 0 > 2472055 rt_sigaction(SIGSEGV,0x2b2aaacc,NULL) = 0 > 2472055 rt_sigaction(SIGSYS,0x2b2aaacc,NULL) = 0 > 2472055 rt_sigaction(SIGPIPE,0x2b2aaacc,NULL) = 0 > 2472050 2472055 > waitid(0,-1,0x2b2aaa7c,0xe)rt_sigaction(SIGALRM,0x2b2aaacc,NULL) = 0 > 2472055 rt_sigaction(SIGXCPU,0x2b2aaacc,NULL) = 0 > 2472055 rt_sigaction(SIGXFSZ,0x2b2aaacc,NULL) = 0 > 2472055 rt_sigaction(SIGVTALRM,0x2b2aaacc,NULL) = 0 > 2472055 rt_sigaction(SIGUSR1,0x2b2aaacc,NULL) = 0 > 2472055 rt_sigaction(SIGUSR2,0x2b2aaacc,NULL) = 0 > 2472055 rt_sigaction(SIGINT,0x2b2aaa0c,0x2b2aaa94) = 0 > 2472055 rt_sigaction(SIGQUIT,0x2b2aaa0c,0x2b2aaa94) = 0 > 2472055 rt_sigaction(SIGTERM,0x2b2aaa0c,0x2b2aaa94) = 0 > 2472055 rt_sigaction(SIGCHLD,0x2b2aaa0c,0x2b2aaa94) = 0 > 2472055 execve("/usr/bin/python",{"python",NULL})Python 3.11.5 (main, Aug 27 > 2023, 18:39:05) [GCC 12.3.1 20230623] on linux > Type "help", "copyright", "credits" or "license" for more information. > >>> = 0 > 2472050 rt_sigprocmask(SIG_BLOCK,0x2b2aa9ec,0x2b2aaa6c,8) = 0 > 2472050 rt_sigprocmask(SIG_SETMASK,0x2b2aaa6c,NULL,8) = 0 > 2472050 rt_sigprocmask(SIG_BLOCK,0x2b2aa9ec,0x2b2aaa6c,8) = 0 > 2472050 rt_sigprocmask(SIG_SETMASK,0x2b2aaa6c,NULL,8) = 0 > 2472050 rt_sigprocmask(SIG_BLOCK,0x2b2aaa6c,0x2b2aaaec,8) = 0 > 2472050 ioctl(255,TIOCSPGRP,2472050) = 0 > 2472050 rt_sigprocmask(SIG_SETMASK,0x2b2aaaec,NULL,8) = 0 > 2472050 ioctl(255,TCSETSW,{c_iflag = ICRNL|IXON|IXOFF|IUTF8,c_oflag = > OPOST|ONLCR,c_cflag = B38400,CS8,CREAD,c_lflag = > ISIG|ICANON|ECHO|ECHOE|ECHOK|ECHOCTL|ECHOKE|IEXTEN,c_cc = "",c_line = ''}) = 0 > 2472050 ioctl(255,TIOCGWINSZ,0x2b2aab74) = 0 ({49,194,1749,896}) > 2472050 write(2,0xe56c0,1) > = 1 > 2472050 > openat(AT_FDCWD,"/usr/share/locale/locale.alias",O_RDONLY|O_LARGEFILE|O_CLOEXEC) > = 3 > 2472050 > statx(3,"",AT_EMPTY_PATH|AT_NO_AUTOMOUNT|AT_STATX_SYNC_AS_STAT,STATX_BASIC_STATS,0x2b2aa3b8) > = 0 > 2472050 read(3,0xf4d00,4096) = 2998 > 2472050 read(3,0xf4d00,4096) = 0 > 2472050 close(3) = 0 > 2472050 > openat(AT_FDCWD,"/usr/share/locale/en_US.utf8/LC_MESSAGES/bash.mo",O_RDONLY|O_LARGEFILE) > = -1 errno=2 (No such file or directory) > 2472050 > openat(AT_FDCWD,"/usr/share/locale/en_US/LC_MESSAGES/bash.mo",O_RDONLY|O_LARGEFILE) > = -1 errno=2 (No such file or directory) > 2472050 > openat(AT_FDCWD,"/usr/share/locale/en.utf8/LC_MESSAGES/bash.mo",O_RDONLY|O_LARGEFILE) > = -1 errno=2 (No such file or directory) > 2472050 > openat(AT_FDCWD,"/usr/share/locale/en/LC_MESSAGES/bash.mo",O_RDONLY|O_LARGEFILE) > = -1 errno=2 (No such file or directory) > 2472050 write(2,0xe56c0,37)[1]+ Stopped python > = 37 > 2472050 rt_sigprocmask(SIG_SETMASK,0x2b2aac2c,NULL,8) = 0 > --- SIGCHLD {si_signo=SIGCHLD, si_code=5, si_pid=2472055, si_uid=0, > si_status=20, si_utime=2, si_stime=0} --- > 2472050 waitid(0,-1,0x2b2aa70c,0xf) = 0 > 2472050 waitid(0,-1,0x2b2aa70c,0xf) = 0 > 2472050 waitid(0,-1,0x2b2aa70c,0xf) = 0 > 2472050 waitid(0,-1,0x2b2aa70c,0xf) = 0 > 2472050 waitid(0,-1,0x2b2aa70c,0xf) = 0 > 2472050 waitid(0,-1,0x2b2aa70c,0xf) = 0 > 2472050 waitid(0,-1,0x2b2aa70c,0xf) = 0 > 2472050 waitid(0,-1,0x2b2aa70c,0xf) = 0 > 2472050 waitid(0,-1,0x2b2aa70c,0xf) = 0 > 2472050 waitid(0,-1,0x2b2aa70c,0xf) = 0 > 2472050 waitid(0,-1,0x2b2aa70c,0xf) = 0 > 2472050 waitid(0,-1,0x2b2aa70c,0xf) = 0 > 2472050 waitid(0,-1,0x2b2aa70c,0xf) = 0 > 2472050 waitid(0,-1,0x2b2aa70c,0xf) = 0 > (...) > > 3) > pinacolada ~ # strace qemu-riscv32 -L /var/lib/machines/riscv32 > /var/lib/machines/riscv32/bin/bash > > (...) > write(2, "\33]0;root@pinacolada:~\7\33[01;31mpi"..., 58pinacolada ~ # ) = 58 > pselect6(1, [0], NULL, NULL, NULL, {sigmask=[], sigsetsize=8}) = 1 (in [0]) > read(0, "p", 1) = 1 > pselect6(1, [0], NULL, [0], {tv_sec=0, tv_nsec=0}, NULL) = 0 (Timeout) > write(2, "p", 1p) = 1 > pselect6(1, [0], NULL, NULL, NULL, {sigmask=[], sigsetsize=8}) = 1 (in [0]) > read(0, "y", 1) = 1 > pselect6(1, [0], NULL, [0], {tv_sec=0, tv_nsec=0}, NULL) = 0 (Timeout) > write(2, "y", 1y) = 1 > pselect6(1, [0], NULL, NULL, NULL, {sigmask=[], sigsetsize=8}) = 1 (in [0]) > read(0, "t", 1) = 1 > pselect6(1, [0], NULL, [0], {tv_sec=0, tv_nsec=0}, NULL) = 0 (Timeout) > write(2, "t", 1t) = 1 > pselect6(1, [0], NULL, NULL, NULL, {sigmask=[], sigsetsize=8}) = 1 (in [0]) > read(0, "h", 1) = 1 > pselect6(1, [0], NULL, [0], {tv_sec=0, tv_nsec=0}, NULL) = 0 (Timeout) > write(2, "h", 1h) = 1 > pselect6(1, [0], NULL, NULL, NULL, {sigmask=[], sigsetsize=8}) = 1 (in [0]) > read(0, "o", 1) = 1 > pselect6(1, [0], NULL, [0], {tv_sec=0, tv_nsec=0}, NULL) = 0 (Timeout) > write(2, "o", 1o) = 1 > pselect6(1, [0], NULL, NULL, NULL, {sigmask=[], sigsetsize=8}) = 1 (in [0]) > read(0, "n", 1) = 1 > pselect6(1, [0], NULL, [0], {tv_sec=0, tv_nsec=0}, NULL) = 0 (Timeout) > write(2, "n", 1n) = 1 > pselect6(1, [0], NULL, NULL, NULL, {sigmask=[], sigsetsize=8}) = 1 (in [0]) > read(0, "\r", 1) = 1 > write(2, "\n", 1 > ) = 1 > ) = 904l\r", 9 > ioctl(0, TCSETSW, {c_iflag=ICRNL|IXON|IXOFF|IUTF8, > c_oflag=NL0|CR0|TAB0|BS0|VT0|FF0|OPOST|ONLCR, c_cflag=B38400|CS8|CREAD, > c_lflag=ISIG|ICANON|ECHO|ECHOE|ECHOK|IEXTEN|ECHOCTL|ECHOKE, ...}) = 0 > rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], NULL, 8) = 0 > rt_sigaction(SIGINT, {sa_handler=0x4c2160, sa_mask=~[RTMIN RT_1], > sa_flags=SA_RESTORER|SA_SIGINFO, sa_restorer=0x5cdb50}, NULL, 8) = 0 > rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], NULL, 8) = 0 > rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 > rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], NULL, 8) = 0 > rt_sigaction(SIGHUP, {sa_handler=0x4c2160, sa_mask=~[RTMIN RT_1], > sa_flags=SA_RESTORER|SA_SIGINFO, sa_restorer=0x5cdb50}, NULL, 8) = 0 > rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], NULL, 8) = 0 > rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 > rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], NULL, 8) = 0 > rt_sigaction(SIGALRM, {sa_handler=0x4c2160, sa_mask=~[RTMIN RT_1], > sa_flags=SA_RESTORER|SA_SIGINFO, sa_restorer=0x5cdb50}, NULL, 8) = 0 > rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], NULL, 8) = 0 > rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 > rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], NULL, 8) = 0 > rt_sigaction(SIGWINCH, {sa_handler=0x4c2160, sa_mask=~[RTMIN RT_1], > sa_flags=SA_RESTORER|SA_RESTART|SA_SIGINFO, sa_restorer=0x5cdb50}, NULL, 8) = > 0 > rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], NULL, 8) = 0 > rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 > rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], NULL, 8) = 0 > rt_sigaction(SIGINT, {sa_handler=0x4c2160, sa_mask=~[RTMIN RT_1], > sa_flags=SA_RESTORER|SA_SIGINFO, sa_restorer=0x5cdb50}, NULL, 8) = 0 > rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], NULL, 8) = 0 > rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 > statx(AT_FDCWD, ".", AT_STATX_SYNC_AS_STAT|AT_NO_AUTOMOUNT, > STATX_BASIC_STATS, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, > stx_attributes=0, stx_mode=S_IFDIR|0700, stx_size=16384, ...}) = 0 > statx(AT_FDCWD, "/usr/local/sbin/python", > AT_STATX_SYNC_AS_STAT|AT_NO_AUTOMOUNT, STATX_BASIC_STATS, 0x7fff3f875900) = > -1 ENOENT (No such file or directory) > statx(AT_FDCWD, "/usr/local/bin/python", > AT_STATX_SYNC_AS_STAT|AT_NO_AUTOMOUNT, STATX_BASIC_STATS, 0x7fff3f875900) = > -1 ENOENT (No such file or directory) > statx(AT_FDCWD, "/usr/sbin/python", AT_STATX_SYNC_AS_STAT|AT_NO_AUTOMOUNT, > STATX_BASIC_STATS, 0x7fff3f875900) = -1 ENOENT (No such file or directory) > statx(AT_FDCWD, "/usr/bin/python", AT_STATX_SYNC_AS_STAT|AT_NO_AUTOMOUNT, > STATX_BASIC_STATS, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, > stx_attributes=0, stx_mode=S_IFREG|0755, stx_size=18808, ...}) = 0 > statx(AT_FDCWD, "/usr/bin/python", AT_STATX_SYNC_AS_STAT|AT_NO_AUTOMOUNT, > STATX_BASIC_STATS, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, > stx_attributes=0, stx_mode=S_IFREG|0755, stx_size=18808, ...}) = 0 > geteuid() = 0 > getegid() = 0 > getuid() = 0 > getgid() = 0 > faccessat2(AT_FDCWD, "/usr/bin/python", X_OK, 0) = 0 > statx(AT_FDCWD, "/usr/bin/python", AT_STATX_SYNC_AS_STAT|AT_NO_AUTOMOUNT, > STATX_BASIC_STATS, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, > stx_attributes=0, stx_mode=S_IFREG|0755, stx_size=18808, ...}) = 0 > geteuid() = 0 > getegid() = 0 > getuid() = 0 > getgid() = 0 > faccessat2(AT_FDCWD, "/usr/bin/python", R_OK, 0) = 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, [INT TERM CHLD], NULL, 8) = 0 > rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], NULL, 8) = 0 > rt_sigaction(SIGTERM, {sa_handler=0x4c2160, sa_mask=~[RTMIN RT_1], > sa_flags=SA_RESTORER|SA_SIGINFO, sa_restorer=0x5cdb50}, NULL, 8) = 0 > rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], NULL, 8) = 0 > rt_sigprocmask(SIG_SETMASK, [INT TERM 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, [INT TERM 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, [INT TERM CHLD], NULL, 8) = 0 > pipe2([3, 4], 0) = 0 > rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], NULL, 8) = 0 > clone(child_stack=NULL, > flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, > child_tidptr=0x228b790) = 2472081 > rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], NULL, 8) = 0 > rt_sigprocmask(SIG_SETMASK, [INT TERM CHLD], NULL, 8) = 0 > rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], NULL, 8) = 0 > rt_sigaction(SIGTERM, {sa_handler=SIG_IGN, sa_mask=~[RTMIN RT_1], > sa_flags=SA_RESTORER|SA_SIGINFO, sa_restorer=0x5cdb50}, NULL, 8) = 0 > rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], NULL, 8) = 0 > rt_sigprocmask(SIG_SETMASK, [INT TERM CHLD], NULL, 8) = 0 > setpgid(2472081, 2472081) = 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, [], 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 > close(3) = 0 > close(4) = 0 > ioctl(255, TIOCGPGRP, [2472081]) = 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, [], 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, Python 3.11.5 (main, Aug 27 2023, 18:39:05) [GCC 12.3.1 > 20230623] on linux > Type "help", "copyright", "credits" or "license" for more information. > >>> {si_signo=SIGCHLD, si_code=CLD_STOPPED, si_pid=2472081, si_uid=0, > >>> si_status=SIGTSTP, si_utime=140734259223024 /* 1407342592230.24 s */, > >>> si_stime=4923637 /* 49236.37 s */}, WEXITED|WSTOPPED|WCONTINUED, 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 > 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 > 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 TSTP TTIN TTOU], NULL, 8) = 0 > ioctl(255, TIOCSPGRP, [2472076]) = 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 > ioctl(255, TCSETSW, {c_iflag=ICRNL|IXON|IXOFF|IUTF8, > c_oflag=NL0|CR0|TAB0|BS0|VT0|FF0|OPOST|ONLCR, c_cflag=B38400|CS8|CREAD, > c_lflag=ISIG|ICANON|ECHO|ECHOE|ECHOK|IEXTEN|ECHOCTL|ECHOKE, ...}) = 0 > ioctl(255, TIOCGWINSZ, {ws_row=49, ws_col=194, ws_xpixel=1749, > ws_ypixel=896}) = 0 > write(2, "\n", 1 > ) = 1 > futex(0x8800f8, FUTEX_WAKE_PRIVATE, 2147483647) = 0 > readlink("/usr", 0x7fff3f8742a0, 1023) = -1 EINVAL (Invalid argument) > readlink("/usr/share", 0x7fff3f8742a0, 1023) = -1 EINVAL (Invalid argument) > readlink("/usr/share/locale", 0x7fff3f8742a0, 1023) = -1 EINVAL (Invalid > argument) > readlink("/usr/share/locale/locale.alias", 0x7fff3f8742a0, 1023) = -1 EINVAL > (Invalid argument) > access("/var/lib/machines/riscv32/usr/share/locale/locale.alias", F_OK) = 0 > openat(AT_FDCWD, "/var/lib/machines/riscv32/usr/share/locale/locale.alias", > O_RDONLY|O_CLOEXEC) = 3 > statx(3, "", AT_STATX_SYNC_AS_STAT|AT_NO_AUTOMOUNT|AT_EMPTY_PATH, > STATX_BASIC_STATS, {stx_mask=STATX_ALL|STATX_MNT_ID, stx_attributes=0, > stx_mode=S_IFREG|0644, stx_size=2998, ...}) = 0 > read(3, "# Locale name alias data base.\n#"..., 4096) = 2998 > read(3, "", 4096) = 0 > close(3) = 0 > readlink("/usr", 0x7fff3f8742a0, 1023) = -1 EINVAL (Invalid argument) > readlink("/usr/share", 0x7fff3f8742a0, 1023) = -1 EINVAL (Invalid argument) > readlink("/usr/share/locale", 0x7fff3f8742a0, 1023) = -1 EINVAL (Invalid > argument) > readlink("/usr/share/locale/en_US.utf8", 0x7fff3f8742a0, 1023) = -1 ENOENT > (No such file or directory) > access("/var/lib/machines/riscv32/usr/share/locale/en_US.utf8/LC_MESSAGES/bash.mo", > F_OK) = -1 ENOENT (No such file or directory) > openat(AT_FDCWD, "/usr/share/locale/en_US.utf8/LC_MESSAGES/bash.mo", > O_RDONLY) = -1 ENOENT (No such file or directory) > readlink("/usr", 0x7fff3f8742a0, 1023) = -1 EINVAL (Invalid argument) > readlink("/usr/share", 0x7fff3f8742a0, 1023) = -1 EINVAL (Invalid argument) > readlink("/usr/share/locale", 0x7fff3f8742a0, 1023) = -1 EINVAL (Invalid > argument) > readlink("/usr/share/locale/en_US", 0x7fff3f8742a0, 1023) = -1 EINVAL > (Invalid argument) > readlink("/usr/share/locale/en_US/LC_MESSAGES", 0x7fff3f8742a0, 1023) = -1 > EINVAL (Invalid argument) > readlink("/usr/share/locale/en_US/LC_MESSAGES/bash.mo", 0x7fff3f8742a0, 1023) > = -1 ENOENT (No such file or directory) > access("/var/lib/machines/riscv32/usr/share/locale/en_US/LC_MESSAGES/bash.mo", > F_OK) = -1 ENOENT (No such file or directory) > openat(AT_FDCWD, "/usr/share/locale/en_US/LC_MESSAGES/bash.mo", O_RDONLY) = > -1 ENOENT (No such file or directory) > readlink("/usr", 0x7fff3f8742a0, 1023) = -1 EINVAL (Invalid argument) > readlink("/usr/share", 0x7fff3f8742a0, 1023) = -1 EINVAL (Invalid argument) > readlink("/usr/share/locale", 0x7fff3f8742a0, 1023) = -1 EINVAL (Invalid > argument) > readlink("/usr/share/locale/en.utf8", 0x7fff3f8742a0, 1023) = -1 ENOENT (No > such file or directory) > access("/var/lib/machines/riscv32/usr/share/locale/en.utf8/LC_MESSAGES/bash.mo", > F_OK) = -1 ENOENT (No such file or directory) > openat(AT_FDCWD, "/usr/share/locale/en.utf8/LC_MESSAGES/bash.mo", O_RDONLY) = > -1 ENOENT (No such file or directory) > readlink("/usr", 0x7fff3f8742a0, 1023) = -1 EINVAL (Invalid argument) > readlink("/usr/share", 0x7fff3f8742a0, 1023) = -1 EINVAL (Invalid argument) > readlink("/usr/share/locale", 0x7fff3f8742a0, 1023) = -1 EINVAL (Invalid > argument) > readlink("/usr/share/locale/en", 0x7fff3f8742a0, 1023) = -1 EINVAL (Invalid > argument) > readlink("/usr/share/locale/en/LC_MESSAGES", 0x7fff3f8742a0, 1023) = -1 > EINVAL (Invalid argument) > readlink("/usr/share/locale/en/LC_MESSAGES/bash.mo", 0x7fff3f8742a0, 1023) = > -1 ENOENT (No such file or directory) > access("/var/lib/machines/riscv32/usr/share/locale/en/LC_MESSAGES/bash.mo", > F_OK) = -1 ENOENT (No such file or directory) > openat(AT_FDCWD, "/usr/share/locale/en/LC_MESSAGES/bash.mo", O_RDONLY) = -1 > ENOENT (No such file or directory) > write(2, "[1]+ Stopped py"..., 37[1]+ Stopped > python > ) = 37 > rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], NULL, 8) = 0 > rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], NULL, 8) = 0 > rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 > --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_STOPPED, si_pid=2472081, si_uid=0, > si_status=SIGTSTP, si_utime=2 /* 0.02 s */, si_stime=0} --- > rt_sigreturn({mask=~[BUS SEGV]}) = 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|WSTOPPED|WCONTINUED, NULL) = 0 > waitid(P_ALL, -1, {}, WNOHANG|WEXITED|WSTOPPED|WCONTINUED, NULL) = 0 > waitid(P_ALL, -1, {}, WNOHANG|WEXITED|WSTOPPED|WCONTINUED, NULL) = 0 > waitid(P_ALL, -1, {}, WNOHANG|WEXITED|WSTOPPED|WCONTINUED, NULL) = 0 > waitid(P_ALL, -1, {}, WNOHANG|WEXITED|WSTOPPED|WCONTINUED, NULL) = 0 > waitid(P_ALL, -1, {}, WNOHANG|WEXITED|WSTOPPED|WCONTINUED, NULL) = 0 > waitid(P_ALL, -1, {}, WNOHANG|WEXITED|WSTOPPED|WCONTINUED, NULL) = 0 > waitid(P_ALL, -1, {}, WNOHANG|WEXITED|WSTOPPED|WCONTINUED, NULL) = 0 > waitid(P_ALL, -1, {}, WNOHANG|WEXITED|WSTOPPED|WCONTINUED, NULL) = 0 > waitid(P_ALL, -1, {}, WNOHANG|WEXITED|WSTOPPED|WCONTINUED, NULL) = 0 > waitid(P_ALL, -1, {}, WNOHANG|WEXITED|WSTOPPED|WCONTINUED, NULL) = 0 > waitid(P_ALL, -1, {}, WNOHANG|WEXITED|WSTOPPED|WCONTINUED, NULL) = 0 > waitid(P_ALL, -1, {}, WNOHANG|WEXITED|WSTOPPED|WCONTINUED, NULL) = 0 > waitid(P_ALL, -1, {}, WNOHANG|WEXITED|WSTOPPED|WCONTINUED, NULL) = 0 > waitid(P_ALL, -1, {}, WNOHANG|WEXITED|WSTOPPED|WCONTINUED, NULL) = 0 > (...)
Ok! So on my x86 machine I see this --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=285545, si_uid=1000, si_status=0, si_utime=0, si_stime=0} --- wait4(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], WNOHANG|WSTOPPED|WCONTINUED, NULL) = 285545 wait4(-1, 0x7ffe3eeb8210, WNOHANG|WSTOPPED|WCONTINUED, NULL) = 0 rt_sigreturn({mask=[INT]}) = 0 close(3) = 0 It all looks ok. Maybe the host_to_target_siginfo() function in QEMU is the issue? Something in here? https://github.com/qemu/qemu/blob/master/linux-user/signal.c#L335 Nothing jumps out with a quick look though Alistair > > > > -- > Andreas K. Hüttel > dilfri...@gentoo.org > Gentoo Linux developer > (council, toolchain, base-system, perl, libreoffice)