* qemu-riscv32 usermode still broken? @ 2023-09-12 22:31 Andreas K. Huettel 2023-09-13 1:41 ` LIU Zhiwei 0 siblings, 1 reply; 11+ messages in thread From: Andreas K. Huettel @ 2023-09-12 22:31 UTC (permalink / raw) To: qemu-devel, qemu-riscv [-- Attachment #1: Type: text/plain, Size: 2108 bytes --] Dear all, I've once more tried to build up a riscv32 linux install in a qemu-riscv32 usermode systemd-nspawn, and am running into the same problems as some time ago... https://dev.gentoo.org/~dilfridge/riscv32/riscv32.tar.xz (220M) The problems manifest themselves mostly in bash; if I replace /bin/bash with a static x86-64 binary (in the tarball as /bin/bash.amd64), bypassing qemu, I can make the chroot rebuild itself completely. https://lists.gnu.org/archive/html/bug-bash/2023-09/msg00119.html ^ Here I'm trying to find out more. Bash tests apparently indicate that argv[0] is overwritten, and that reading through a pipe or from /dev/tty fails or loses data. Apart from the bash testsuite failing, symptoms are as follows: * Something seems wrong in the signal handling (?): --- our package manager (bash/python combo, there bash) hangs reproducibly at one point. --- when I run a console program and try to background it with ctl-z, it hangs (only the first time per bash instance, it seems) repeated ctl-c gets me back to the shell, then the program is in the background riscv32 ~ # python Python 3.11.5 (main, Aug 31 2023, 21:56:30) [GCC 13.2.1 20230826] on linux Type "help", "copyright", "credits" or "license" for more information. >>> [1]+ Stopped python ^C^C^C^C^C^C^C riscv32 ~ # ^C riscv32 ~ # riscv32 ~ # jobs [1]+ Stopped python riscv32 ~ # fg python >>> --- make, when building something, seems to always start only one job in parallel Any advice or debugging would be appreciated. If we get this running then I can set up regular riscv32 Gentoo stage builds within a week. [*] Thanks in advance, Andreas PS. huettel@pinacolada ~ $ /var/lib/machines/riscv32/usr/bin/qemu-riscv32 -version qemu-riscv32 version 8.1.0 Copyright (c) 2003-2023 Fabrice Bellard and the QEMU Project developers [*] https://www.gentoo.org/downloads/#riscv -- Andreas K. Hüttel dilfridge@gentoo.org Gentoo Linux developer (council, toolchain, base-system, perl, libreoffice) [-- Attachment #2: This is a digitally signed message part. --] [-- Type: application/pgp-signature, Size: 981 bytes --] ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: qemu-riscv32 usermode still broken? 2023-09-12 22:31 qemu-riscv32 usermode still broken? Andreas K. Huettel @ 2023-09-13 1:41 ` LIU Zhiwei 2023-09-13 8:06 ` Michael Tokarev 2023-09-14 1:22 ` Andreas K. Huettel 0 siblings, 2 replies; 11+ messages in thread From: LIU Zhiwei @ 2023-09-13 1:41 UTC (permalink / raw) To: Andreas K. Huettel, qemu-devel@nongnu.org Developers, open list:RISC-V On 2023/9/13 6:31, Andreas K. Huettel wrote: > Dear all, > > I've once more tried to build up a riscv32 linux install in a qemu-riscv32 > usermode systemd-nspawn, and am running into the same problems as some time > ago... > > https://dev.gentoo.org/~dilfridge/riscv32/riscv32.tar.xz (220M) > > The problems manifest themselves mostly in bash; if I replace /bin/bash > with a static x86-64 binary (in the tarball as /bin/bash.amd64), bypassing > qemu, I can make the chroot rebuild itself completely. > > https://lists.gnu.org/archive/html/bug-bash/2023-09/msg00119.html > ^ Here I'm trying to find out more. > > Bash tests apparently indicate that argv[0] is overwritten, and that > reading through a pipe or from /dev/tty fails or loses data. > > Apart from the bash testsuite failing, symptoms are as follows: > > * Something seems wrong in the signal handling (?): If it is wrong for signal handling and for 32-bit, I guess it may be fixed by this patch https://www.mail-archive.com/qemu-devel@nongnu.org/msg981238.html And this patch has been merged into master branch yesterday. May be you can have a try based on the master branch. Thanks, Zhiwei > --- our package manager (bash/python combo, there bash) hangs reproducibly at > one point. > --- when I run a console program and try to background it with ctl-z, it hangs > (only the first time per bash instance, it seems) > repeated ctl-c gets me back to the shell, then the program is in the > background > > riscv32 ~ # python > Python 3.11.5 (main, Aug 31 2023, 21:56:30) [GCC 13.2.1 20230826] on linux > Type "help", "copyright", "credits" or "license" for more information. > [1]+ Stopped python > ^C^C^C^C^C^C^C > riscv32 ~ # ^C > riscv32 ~ # > riscv32 ~ # jobs > [1]+ Stopped python > riscv32 ~ # fg > python > > > --- make, when building something, seems to always start only one job in > parallel > > Any advice or debugging would be appreciated. > > If we get this running then I can set up regular riscv32 Gentoo stage builds > within a week. [*] > > Thanks in advance, > Andreas > > PS. > huettel@pinacolada ~ $ /var/lib/machines/riscv32/usr/bin/qemu-riscv32 -version > qemu-riscv32 version 8.1.0 > Copyright (c) 2003-2023 Fabrice Bellard and the QEMU Project developers > > > [*] https://www.gentoo.org/downloads/#riscv > ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: qemu-riscv32 usermode still broken? 2023-09-13 1:41 ` LIU Zhiwei @ 2023-09-13 8:06 ` Michael Tokarev 2023-09-13 10:33 ` Andreas K. Huettel 2023-09-14 1:22 ` Andreas K. Huettel 1 sibling, 1 reply; 11+ messages in thread From: Michael Tokarev @ 2023-09-13 8:06 UTC (permalink / raw) To: LIU Zhiwei, Andreas K. Huettel, qemu-devel@nongnu.org Developers, open list:RISC-V 13.09.2023 04:41, LIU Zhiwei wrote: > > On 2023/9/13 6:31, Andreas K. Huettel wrote: .. >> * Something seems wrong in the signal handling (?): > > If it is wrong for signal handling and for 32-bit, I guess it may be fixed by this patch > > https://www.mail-archive.com/qemu-devel@nongnu.org/msg981238.html > > And this patch has been merged into master branch yesterday. I picked this one up for stable yesterday, scheduled to be released on Sep-21. Thanks, /mjt ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: qemu-riscv32 usermode still broken? 2023-09-13 8:06 ` Michael Tokarev @ 2023-09-13 10:33 ` Andreas K. Huettel 0 siblings, 0 replies; 11+ messages in thread From: Andreas K. Huettel @ 2023-09-13 10:33 UTC (permalink / raw) To: LIU Zhiwei, qemu-devel@nongnu.org Developers, open list:RISC-V Cc: Michael Tokarev [-- Attachment #1: Type: text/plain, Size: 794 bytes --] Am Mittwoch, 13. September 2023, 10:06:01 CEST schrieb Michael Tokarev: > 13.09.2023 04:41, LIU Zhiwei wrote: > > > > On 2023/9/13 6:31, Andreas K. Huettel wrote: > .. > >> * Something seems wrong in the signal handling (?): > > > > If it is wrong for signal handling and for 32-bit, I guess it may be fixed by this patch > > > > https://www.mail-archive.com/qemu-devel@nongnu.org/msg981238.html > > > > And this patch has been merged into master branch yesterday. > > I picked this one up for stable yesterday, scheduled to be released > on Sep-21. Oh great, thanks! I'll test this and report back. -a > > Thanks, > > /mjt > > > -- Andreas K. Hüttel dilfridge@gentoo.org Gentoo Linux developer (council, toolchain, base-system, perl, libreoffice) [-- Attachment #2: This is a digitally signed message part. --] [-- Type: application/pgp-signature, Size: 981 bytes --] ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: qemu-riscv32 usermode still broken? 2023-09-13 1:41 ` LIU Zhiwei 2023-09-13 8:06 ` Michael Tokarev @ 2023-09-14 1:22 ` Andreas K. Huettel 2023-09-16 22:37 ` Andreas K. Huettel 1 sibling, 1 reply; 11+ messages in thread From: Andreas K. Huettel @ 2023-09-14 1:22 UTC (permalink / raw) To: qemu-devel@nongnu.org Developers, open list:RISC-V; +Cc: LIU Zhiwei [-- Attachment #1: Type: text/plain, Size: 1494 bytes --] > > https://lists.gnu.org/archive/html/bug-bash/2023-09/msg00119.html > > ^ Here I'm trying to find out more. > > > > Bash tests apparently indicate that argv[0] is overwritten, and that > > reading through a pipe or from /dev/tty fails or loses data. > > > > Apart from the bash testsuite failing, symptoms are as follows: > > > > * Something seems wrong in the signal handling (?): > > If it is wrong for signal handling and for 32-bit, I guess it may be > fixed by this patch > > https://www.mail-archive.com/qemu-devel@nongnu.org/msg981238.html > > And this patch has been merged into master branch yesterday. > > May be you can have a try based on the master branch. I added the patch to 8.0.3 (easier for the moment), and this did unfortunately *not* lead to any improvements. More debugging coming (weekend hopefully). However, in the meantime on the GNU Make tracker Alejandro Colomar pointed me to another detail based on my oddities [1]: > I think [make] it's failing here: > > <https://git.savannah.gnu.org/cgit/make.git/tree/src/job.c#n757> > > But it's failing with ENOENT, which is not one of the documented > errors for wait(2): So maybe another point to look at would be the origin of the return values of wait, and whether that's wired correctly for rv32... [1] https://savannah.gnu.org/bugs/?64664 -- Andreas K. Hüttel dilfridge@gentoo.org Gentoo Linux developer (council, toolchain, base-system, perl, libreoffice) [-- Attachment #2: This is a digitally signed message part. --] [-- Type: application/pgp-signature, Size: 981 bytes --] ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: qemu-riscv32 usermode still broken? 2023-09-14 1:22 ` Andreas K. Huettel @ 2023-09-16 22:37 ` Andreas K. Huettel 2023-09-18 1:16 ` Alistair Francis 0 siblings, 1 reply; 11+ messages in thread From: Andreas K. Huettel @ 2023-09-16 22:37 UTC (permalink / raw) To: qemu-devel@nongnu.org Developers, open list:RISC-V Cc: LIU Zhiwei, Andreas K. Huettel, Alistair Francis [-- Attachment #1: Type: text/plain, Size: 2164 bytes --] Am Donnerstag, 14. September 2023, 03:22:49 CEST schrieb Andreas K. Huettel: > > > https://lists.gnu.org/archive/html/bug-bash/2023-09/msg00119.html > > > ^ Here I'm trying to find out more. > > > > > > Bash tests apparently indicate that argv[0] is overwritten, and that > > > reading through a pipe or from /dev/tty fails or loses data. > > > > > > Apart from the bash testsuite failing, symptoms are as follows: > > > > > > * Something seems wrong in the signal handling (?): > > > > If it is wrong for signal handling and for 32-bit, I guess it may be > > fixed by this patch > > > > https://www.mail-archive.com/qemu-devel@nongnu.org/msg981238.html > > > > And this patch has been merged into master branch yesterday. > > > > May be you can have a try based on the master branch. > > I added the patch to 8.0.3 (easier for the moment), and this did > unfortunately *not* lead to any improvements. Also with the patch on top of 8.1.0 no improvement or change. > However, in the meantime on the GNU Make tracker Alejandro Colomar > pointed me to another detail based on my oddities [1]: > > > I think [make] it's failing here: > > > > <https://git.savannah.gnu.org/cgit/make.git/tree/src/job.c#n757> > > > > But it's failing with ENOENT, which is not one of the documented > > errors for wait(2): > > So maybe another point to look at would be the origin of the return > values of wait, and whether that's wired correctly for rv32... > > [1] https://savannah.gnu.org/bugs/?64664 In the meantime I tried to nail down a reproducible hang in bash on this frankensystem with qemu's gdb interface. This also pointed towards child handling and wait [2]. [2] https://lists.gnu.org/archive/html/bug-bash/2023-09/msg00128.html Some time ago we already debugged that corner, and Alistair Francis came up with a fix that improved the riscv32 situation back then [3]. Maybe that fix was somehow incomplete? Just speculating... [3] https://bugs.launchpad.net/qemu/+bug/1906193 -- Andreas K. Hüttel dilfridge@gentoo.org Gentoo Linux developer (council, toolchain, base-system, perl, libreoffice) [-- Attachment #2: This is a digitally signed message part. --] [-- Type: application/pgp-signature, Size: 981 bytes --] ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: qemu-riscv32 usermode still broken? 2023-09-16 22:37 ` Andreas K. Huettel @ 2023-09-18 1:16 ` Alistair Francis 2023-09-19 20:39 ` Andreas K. Huettel 0 siblings, 1 reply; 11+ messages in thread From: Alistair Francis @ 2023-09-18 1:16 UTC (permalink / raw) To: Andreas K. Huettel Cc: qemu-devel@nongnu.org Developers, open list:RISC-V, LIU Zhiwei, Alistair Francis On Sun, Sep 17, 2023 at 8:38 AM Andreas K. Huettel <dilfridge@gentoo.org> wrote: > > Am Donnerstag, 14. September 2023, 03:22:49 CEST schrieb Andreas K. Huettel: > > > > https://lists.gnu.org/archive/html/bug-bash/2023-09/msg00119.html > > > > ^ Here I'm trying to find out more. > > > > > > > > Bash tests apparently indicate that argv[0] is overwritten, and that > > > > reading through a pipe or from /dev/tty fails or loses data. > > > > > > > > Apart from the bash testsuite failing, symptoms are as follows: > > > > > > > > * Something seems wrong in the signal handling (?): > > > > > > If it is wrong for signal handling and for 32-bit, I guess it may be > > > fixed by this patch > > > > > > https://www.mail-archive.com/qemu-devel@nongnu.org/msg981238.html > > > > > > And this patch has been merged into master branch yesterday. > > > > > > May be you can have a try based on the master branch. > > > > I added the patch to 8.0.3 (easier for the moment), and this did > > unfortunately *not* lead to any improvements. > > Also with the patch on top of 8.1.0 no improvement or change. > > > However, in the meantime on the GNU Make tracker Alejandro Colomar > > pointed me to another detail based on my oddities [1]: > > > > > I think [make] it's failing here: > > > > > > <https://git.savannah.gnu.org/cgit/make.git/tree/src/job.c#n757> > > > > > > But it's failing with ENOENT, which is not one of the documented > > > errors for wait(2): > > > > So maybe another point to look at would be the origin of the return > > values of wait, and whether that's wired correctly for rv32... > > > > [1] https://savannah.gnu.org/bugs/?64664 > > In the meantime I tried to nail down a reproducible hang in bash on this > frankensystem with qemu's gdb interface. This also pointed towards > child handling and wait [2]. RV32 only has the time64 wait syscall, so it's possible there is a bug there which then wouldn't appear on other arches. You can see the glibc implementation of wait here [1] to give you an idea of how complex it ends up being. 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. 1: https://github.com/bminor/glibc/blob/bb5bbc20702981c287aa3e44640e7d2f2b9a28cf/sysdeps/unix/sysv/linux/wait4.c#L26 Alistair > > [2] https://lists.gnu.org/archive/html/bug-bash/2023-09/msg00128.html > > Some time ago we already debugged that corner, and Alistair Francis > came up with a fix that improved the riscv32 situation back then [3]. > Maybe that fix was somehow incomplete? Just speculating... > > [3] https://bugs.launchpad.net/qemu/+bug/1906193 > > > -- > Andreas K. Hüttel > dilfridge@gentoo.org > Gentoo Linux developer > (council, toolchain, base-system, perl, libreoffice) ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: qemu-riscv32 usermode still broken? 2023-09-18 1:16 ` Alistair Francis @ 2023-09-19 20:39 ` Andreas K. Huettel 2024-06-11 4:43 ` Alistair Francis 0 siblings, 1 reply; 11+ messages in thread From: Andreas K. Huettel @ 2023-09-19 20:39 UTC (permalink / raw) To: qemu-devel Cc: qemu-devel@nongnu.org Developers, open list:RISC-V, LIU Zhiwei, Alistair Francis, Alistair Francis [-- Attachment #1: Type: text/plain, Size: 23812 bytes --] 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 (...) -- Andreas K. Hüttel dilfridge@gentoo.org Gentoo Linux developer (council, toolchain, base-system, perl, libreoffice) [-- Attachment #2: This is a digitally signed message part. --] [-- Type: application/pgp-signature, Size: 981 bytes --] ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: qemu-riscv32 usermode still broken? 2023-09-19 20:39 ` Andreas K. Huettel @ 2024-06-11 4:43 ` Alistair Francis 2024-06-11 8:57 ` Andreas K. Huettel 0 siblings, 1 reply; 11+ messages in thread From: Alistair Francis @ 2024-06-11 4:43 UTC (permalink / raw) To: Andreas K. Huettel Cc: qemu-devel, open list:RISC-V, LIU Zhiwei, Alistair Francis On Wed, Sep 20, 2023 at 6:39 AM Andreas K. Huettel <dilfridge@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 > dilfridge@gentoo.org > Gentoo Linux developer > (council, toolchain, base-system, perl, libreoffice) ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: qemu-riscv32 usermode still broken? 2024-06-11 4:43 ` Alistair Francis @ 2024-06-11 8:57 ` Andreas K. Huettel 2024-06-12 1:26 ` Alistair Francis 0 siblings, 1 reply; 11+ messages in thread From: Andreas K. Huettel @ 2024-06-11 8:57 UTC (permalink / raw) To: Alistair Francis Cc: qemu-devel, open list:RISC-V, LIU Zhiwei, Alistair Francis [-- Attachment #1: Type: text/plain, Size: 2063 bytes --] Hi Alistair, > > 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. This was fixed in the meantime (hooray!), sorry I didn't think anyone would still look at the old thread. The commit is given below. Since then we've been able to build riscv32 stages for Gentoo just fine using qemu-user, see https://www.gentoo.org/downloads/#riscv Cheers, Andreas commit f0907ff4cae743f1a4ef3d0a55a047029eed06ff Author: Richard Henderson <richard.henderson@linaro.org> AuthorDate: Fri Apr 5 11:58:14 2024 -1000 Commit: Richard Henderson <richard.henderson@linaro.org> CommitDate: Tue Apr 9 07:43:11 2024 -1000 linux-user: Fix waitid return of siginfo_t and rusage The copy back to siginfo_t should be conditional only on arg3, not the specific values that might have been written. The copy back to rusage was missing entirely. Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2262 Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Tested-by: Alex Fan <alex.fan.q@gmail.com> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> > > 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 > > dilfridge@gentoo.org > > Gentoo Linux developer > > (council, toolchain, base-system, perl, libreoffice) > -- Andreas K. Hüttel dilfridge@gentoo.org Gentoo Linux developer (council, toolchain, base-system, perl, libreoffice) [-- Attachment #2: This is a digitally signed message part. --] [-- Type: application/pgp-signature, Size: 981 bytes --] ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: qemu-riscv32 usermode still broken? 2024-06-11 8:57 ` Andreas K. Huettel @ 2024-06-12 1:26 ` Alistair Francis 0 siblings, 0 replies; 11+ messages in thread From: Alistair Francis @ 2024-06-12 1:26 UTC (permalink / raw) To: Andreas K. Huettel Cc: qemu-devel, open list:RISC-V, LIU Zhiwei, Alistair Francis On Tue, Jun 11, 2024 at 6:57 PM Andreas K. Huettel <dilfridge@gentoo.org> wrote: > > Hi Alistair, > > > > > 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. > > This was fixed in the meantime (hooray!), sorry I didn't think anyone > would still look at the old thread. The commit is given below. > > Since then we've been able to build riscv32 stages for Gentoo just fine > using qemu-user, see > https://www.gentoo.org/downloads/#riscv Great! Alistair > > Cheers, > Andreas > > commit f0907ff4cae743f1a4ef3d0a55a047029eed06ff > Author: Richard Henderson <richard.henderson@linaro.org> > AuthorDate: Fri Apr 5 11:58:14 2024 -1000 > Commit: Richard Henderson <richard.henderson@linaro.org> > CommitDate: Tue Apr 9 07:43:11 2024 -1000 > > linux-user: Fix waitid return of siginfo_t and rusage > > The copy back to siginfo_t should be conditional only on arg3, > not the specific values that might have been written. > The copy back to rusage was missing entirely. > > Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2262 > Signed-off-by: Richard Henderson <richard.henderson@linaro.org> > Tested-by: Alex Fan <alex.fan.q@gmail.com> > Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> > > > > > > > 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 > > > dilfridge@gentoo.org > > > Gentoo Linux developer > > > (council, toolchain, base-system, perl, libreoffice) > > > > > -- > Andreas K. Hüttel > dilfridge@gentoo.org > Gentoo Linux developer > (council, toolchain, base-system, perl, libreoffice) ^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2024-06-12 1:27 UTC | newest] Thread overview: 11+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2023-09-12 22:31 qemu-riscv32 usermode still broken? Andreas K. Huettel 2023-09-13 1:41 ` LIU Zhiwei 2023-09-13 8:06 ` Michael Tokarev 2023-09-13 10:33 ` Andreas K. Huettel 2023-09-14 1:22 ` Andreas K. Huettel 2023-09-16 22:37 ` Andreas K. Huettel 2023-09-18 1:16 ` Alistair Francis 2023-09-19 20:39 ` Andreas K. Huettel 2024-06-11 4:43 ` Alistair Francis 2024-06-11 8:57 ` Andreas K. Huettel 2024-06-12 1:26 ` Alistair Francis
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).