riscv32 wait() problem, qemu or glibc?

Alistair Francis alistair23@gmail.com
Thu Sep 17 14:02:47 GMT 2020


On Thu, Sep 17, 2020 at 3:16 AM Andreas K. Hüttel <dilfridge@gentoo.org> wrote:
>
> Am Donnerstag, 17. September 2020, 00:05:10 EEST schrieb Alistair Francis:
> > On Wed, Sep 16, 2020 at 2:09 PM Andreas K. Hüttel <dilfridge@gentoo.org>
> wrote:
> > > > My guess is that somewhere in QEMU the types don't match what RV32 is
> > > > using. It's probably worth printing out the size, alignment and value
> > > > of everything at every stage and see what breaks.
> > >
> > > Thanks.
> >
> > Sorry I can't be more helpful. Hopefully one day I will look into it,
> > but it's not a high priority.
>
> No problem at all. I'm mostly going to postpone this now in favour of
> autobuilding bootable images (which needs some non-riscv specific
> preparation).
>
> Last thing I still did overnight was run the glibc testsuite in quemu-riscv32
> user emulation. The summary is below (and as suspected a bit of a massacre);
> I'll look at the details later sometime.
> If anyone else wants to poke at it, I've tarred up the full glibc build dir
> and uploaded it together with the build log, see
> https://dev.gentoo.org/~dilfridge/rv32-testing/
>
> UNSUPPORTED: crypt/cert
> FAIL: debug/tst-backtrace4
> FAIL: debug/tst-backtrace5
> FAIL: debug/tst-backtrace6
> FAIL: elf/check-localplt
> UNSUPPORTED: elf/tst-dlopen-self-container
> UNSUPPORTED: elf/tst-dlopen-tlsmodid-container
> XPASS: elf/tst-latepthread
> UNSUPPORTED: elf/tst-ldconfig-bad-aux-cache
> UNSUPPORTED: elf/tst-ldconfig-ld_so_conf-update
> UNSUPPORTED: elf/tst-pldd
> XPASS: elf/tst-protected1a
> XPASS: elf/tst-protected1b
> FAIL: iconv/tst-iconv_prog
> UNSUPPORTED: io/tst-copy_file_range
> UNSUPPORTED: io/tst-getcwd-abspath
> FAIL: libio/tst-atime
> UNSUPPORTED: locale/tst-localedef-path-norm
> UNSUPPORTED: localedata/tst-localedef-hardlinks
> FAIL: malloc/tst-dynarray-fail
> FAIL: malloc/tst-dynarray-fail-mem
> FAIL: malloc/tst-interpose-nothread
> FAIL: malloc/tst-interpose-static-nothread
> FAIL: malloc/tst-interpose-static-thread
> FAIL: malloc/tst-interpose-thread
> FAIL: malloc/tst-mallocfork2
> UNSUPPORTED: malloc/tst-mallocstate
> FAIL: math/test-double-j1
> FAIL: math/test-double-y0
> UNSUPPORTED: math/test-fesetexcept-traps
> UNSUPPORTED: math/test-fexcept-traps
> FAIL: math/test-float-asinh
> FAIL: math/test-float-cos
> FAIL: math/test-float-cosh
> FAIL: math/test-float-erfc
> FAIL: math/test-float-exp
> FAIL: math/test-float-j0
> FAIL: math/test-float-j1
> FAIL: math/test-float-lgamma
> FAIL: math/test-float-sin
> FAIL: math/test-float-tgamma
> FAIL: math/test-float-y0
> FAIL: math/test-float32-asinh
> FAIL: math/test-float32-cos
> FAIL: math/test-float32-cosh
> FAIL: math/test-float32-erfc
> FAIL: math/test-float32-exp
> FAIL: math/test-float32-j0
> FAIL: math/test-float32-j1
> FAIL: math/test-float32-lgamma
> FAIL: math/test-float32-sin
> FAIL: math/test-float32-tgamma
> FAIL: math/test-float32-y0
> FAIL: math/test-float32x-j1
> FAIL: math/test-float32x-y0
> FAIL: math/test-float64-j1
> FAIL: math/test-float64-y0
> UNSUPPORTED: math/test-matherr
> UNSUPPORTED: math/test-matherr-2
> UNSUPPORTED: math/test-nearbyint-except
> UNSUPPORTED: math/test-nearbyint-except-2
> FAIL: misc/test-errno-linux
> FAIL: misc/tst-clone2
> FAIL: misc/tst-clone3
> FAIL: misc/tst-gettid-kill
> FAIL: misc/tst-glibcsyscalls
> FAIL: misc/tst-memfd_create
> FAIL: misc/tst-mlock2
> UNSUPPORTED: misc/tst-ofdlocks-compat
> UNSUPPORTED: misc/tst-pkey
> FAIL: misc/tst-sigcontext-get_pc
> UNSUPPORTED: misc/tst-ttyname
> UNSUPPORTED: nptl/test-cond-printers
> UNSUPPORTED: nptl/test-condattr-printers
> UNSUPPORTED: nptl/test-mutex-printers
> UNSUPPORTED: nptl/test-mutexattr-printers
> UNSUPPORTED: nptl/test-rwlock-printers
> UNSUPPORTED: nptl/test-rwlockattr-printers
> FAIL: nptl/tst-align-clone
> FAIL: nptl/tst-cancel-self-canceltype
> FAIL: nptl/tst-cancel17
> FAIL: nptl/tst-cancel21
> FAIL: nptl/tst-cancel21-static
> FAIL: nptl/tst-cancel24
> FAIL: nptl/tst-cancel24-static
> FAIL: nptl/tst-cancelx16
> FAIL: nptl/tst-cancelx17
> FAIL: nptl/tst-cancelx18
> FAIL: nptl/tst-cancelx20
> FAIL: nptl/tst-cancelx21
> FAIL: nptl/tst-cancelx4
> FAIL: nptl/tst-cancelx5
> FAIL: nptl/tst-cleanupx4
> FAIL: nptl/tst-cond-except
> FAIL: nptl/tst-cond24
> FAIL: nptl/tst-cond25
> FAIL: nptl/tst-getpid1
> UNSUPPORTED: nptl/tst-mutexpi5
> UNSUPPORTED: nptl/tst-mutexpi5a
> UNSUPPORTED: nptl/tst-mutexpi9
> FAIL: nptl/tst-oncex3
> FAIL: nptl/tst-oncex4
> UNSUPPORTED: nptl/tst-pthread-getattr
> FAIL: nptl/tst-robust-fork
> FAIL: nptl/tst-robust1
> FAIL: nptl/tst-robust2
> FAIL: nptl/tst-robust3
> FAIL: nptl/tst-robust4
> FAIL: nptl/tst-robust5
> FAIL: nptl/tst-robust6
> FAIL: nptl/tst-robust7
> FAIL: nptl/tst-robust8
> FAIL: nptl/tst-robust9
> XPASS: nptl/tst-stack4
> UNSUPPORTED: nss/tst-nss-db-endgrent
> UNSUPPORTED: nss/tst-nss-db-endpwent
> UNSUPPORTED: nss/tst-nss-files-alias-leak
> UNSUPPORTED: nss/tst-nss-files-alias-truncated
> UNSUPPORTED: nss/tst-nss-files-hosts-erange
> UNSUPPORTED: nss/tst-nss-files-hosts-getent
> UNSUPPORTED: nss/tst-nss-files-hosts-long
> UNSUPPORTED: nss/tst-nss-test3
> FAIL: posix/test-errno
> FAIL: posix/tst-fexecve
> UNSUPPORTED: posix/tst-glob_lstat_compat
> FAIL: posix/tst-posix_spawn-setsid
> FAIL: posix/tst-spawn2
> FAIL: posix/tst-spawn4
> UNSUPPORTED: posix/tst-spawn4-compat
> UNSUPPORTED: posix/tst-sysconf-empty-chroot
> FAIL: posix/tst-wait4
> UNSUPPORTED: resolv/tst-p_secstodate
> UNSUPPORTED: resolv/tst-resolv-res_init
> UNSUPPORTED: resolv/tst-resolv-res_init-thread
> UNSUPPORTED: resolv/tst-resolv-threads
> FAIL: rt/tst-aio4
> FAIL: rt/tst-mqueue3
> FAIL: rt/tst-mqueue5
> FAIL: rt/tst-mqueue6
> FAIL: rt/tst-mqueue8x
> FAIL: stdio-common/tst-vfprintf-width-prec
> FAIL: stdio-common/tst-vfprintf-width-prec-mem
> UNSUPPORTED: stdlib/tst-system
> UNSUPPORTED: string/tst-strerror
> UNSUPPORTED: string/tst-strsignal
> XPASS: support/tst-support_descriptors
> FAIL: sysvipc/test-sysvmsg
> FAIL: sysvipc/test-sysvsem
> Summary of test results:
>      95 FAIL
>    3971 PASS
>      48 UNSUPPORTED
>      17 XFAIL
>       5 XPASS
> make[1]: *** [Makefile:634: tests] Error 1

That's actually not too bad. A lot of those are grouped, so fixing one
test should fix a few. Some of them are probably because QEMU is
missing the new syscall.

Some math failures occur in softmmu as well. The guess is that it's
due to bugs in QEMUs float, but I haven't investigated yet.

Alistair

>
>
>
>
>
>
>
> >
> > > > AFAIK RV32 linux-user mode is pretty much un-tested. So their might be
> > > > all sorts of issues with it unfortunately.
> > >
> > > Would you consider qemu system mode more reliable?
> >
> > Yes. For RISC-V the softmmu implementations are much more thoroughly tested.
> > > I need to prepare some bootable riscv gentoo images eventually anyway.
> > > Might as well try a riscv32 one for comparison then if that is more
> > > promising.
> > It would be great to have more distros supporting RV32.
> >
> > Alistair
> >
> > > --
> > > Andreas K. Hüttel
> > > dilfridge@gentoo.org
> > > Gentoo Linux developer
> > > (council, qa, toolchain, base-system, perl, libreoffice)
>
>
> --
> Andreas K. Hüttel
> dilfridge@gentoo.org
> Gentoo Linux developer
> (council, qa, toolchain, base-system, perl, libreoffice)


More information about the Libc-alpha mailing list