|
| From: | Mark Cave-Ayland |
| Subject: | Re: [PULL 81/94] target/sparc: Move FDMULQ to decodetree |
| Date: | Tue, 7 Nov 2023 16:33:56 +0000 |
| User-agent: | Mozilla Thunderbird |
On 07/11/2023 04:49, Richard Henderson wrote:
On 11/6/23 14:02, Mark Cave-Ayland wrote:I was working through my SPARC boot tests for your latest target/sparc series when I spotted a segfault on my FreeBSD SPARC64 image. A git bisect indicated that this was the patch that originally introduced the error, something I must have missed when testing the original decodetree conversion series.The reproducer is: ./qemu-system-sparc64 -m 256 -cdrom FreeBSD-10.3-RELEASE-sparc64-bootonly.iso \ -boot d -nographic and the error is a segfault in devd: ... ... Trying to mount root from cd9660:/dev/iso9660/10_3_RELEASE_SPARC64_BO [ro]... Entropy harvesting: interrupts ethernet point_to_point swi. Starting file system checks: Mounting local file systems:. Writing entropy file:. /etc/rc: WARNING: $hostname is not set -- see rc.conf(5). Starting Network: lo0 hme0. lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384 options=600003<RXCSUM,TXCSUM,RXCSUM_IPV6,TXCSUM_IPV6> inet6 ::1 prefixlen 128 inet6 fe80::1%lo0 prefixlen 64 scopeid 0x2 inet 127.0.0.1 netmask 0xff000000 nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL> hme0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 1500 options=8000b<RXCSUM,TXCSUM,VLAN_MTU,LINKSTATE> ether 52:54:00:12:34:56 nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL> media: Ethernet autoselect Starting devd. pid 246 (ps), uid 0: exited on signal 11 Segmentation fault ^^^^^^^^^^^^^^^^^^I certainly can't imagine that FdMULq is really at fault, because it's not implemented on real hardware (and thus I really doubt FreeBSD attempted to use it), and CPU_FEATURE_FLOAT128 is not enabled by your command-line.The only thing that I can imagine is that this is some sort of timing related issue and bisect behaved randomly.
Hmmm you're right, it seems that there is a semi-random aspect to the issue which is why the bisection didn't give a good result.
In order to mitigate this, I repeated the bisection again but this time booting the FreeBSD image 5 times in a row, only marking the commit as good if all 5 boot tests passed [1] without displaying a segfault message [2]. That bisection led me to this commit:
86b82fe021f46ed4501b16132f7e3fccd0a1ad5d is the first bad commit
commit 86b82fe021f46ed4501b16132f7e3fccd0a1ad5d
Author: Richard Henderson <richard.henderson@linaro.org>
Date: Wed Oct 4 17:51:37 2023 -0700
target/sparc: Move JMPL, RETT, RETURN to decodetree
Tested-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
target/sparc/insns.decode | 7 +++
target/sparc/translate.c | 126 +++++++++++++++++++++++++++++-----------------
2 files changed, 88 insertions(+), 45 deletions(-)
I tried repeating the boot 5 times in a row test on both this commit and the commit
before it, and that appeared to confirm the bisection result with the failures only
appearing with commit 86b82fe021.
> All that said, I can't replicate this with master. > Can you, now?Yes, the issue is still present in master for me. My host is Debian bookworm (stable, x86_64) configured as './configure' '--target-list=sparc64-softmmu' '--enable-slirp' '--enable-debug' and the command line is:
./qemu-system-sparc64 -m 256 -cdrom FreeBSD-10.3-RELEASE-sparc64-bootonly.iso \
-boot d -nographic
ATB,
Mark.
[1] Sometimes the image hangs just after "Trying to mount root .." but that appears
to be a timing issue and not directly related to this series. In this cases where
this happened, I simply quit QEMU and rebooted the image again.
[2] Normally the segfault message comes from devd, but during the bisection I did occasionally see it coming from other processes.
| [Prev in Thread] | Current Thread | [Next in Thread] |