diff options
| author | Christian Krinitsin <mail@krinitsin.com> | 2025-06-16 16:59:00 +0000 |
|---|---|---|
| committer | Christian Krinitsin <mail@krinitsin.com> | 2025-06-16 16:59:33 +0000 |
| commit | 9aba81d8eb048db908c94a3c40c25a5fde0caee6 (patch) | |
| tree | b765e7fb5e9a3c2143c68b0414e0055adb70e785 /results/classifier/118/graphic/1416988 | |
| parent | b89a938452613061c0f1f23e710281cf5c83cb29 (diff) | |
| download | emulator-bug-study-9aba81d8eb048db908c94a3c40c25a5fde0caee6.tar.gz emulator-bug-study-9aba81d8eb048db908c94a3c40c25a5fde0caee6.zip | |
add 18th iteration of classifier
Diffstat (limited to 'results/classifier/118/graphic/1416988')
| -rw-r--r-- | results/classifier/118/graphic/1416988 | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/results/classifier/118/graphic/1416988 b/results/classifier/118/graphic/1416988 new file mode 100644 index 00000000..dbc202c0 --- /dev/null +++ b/results/classifier/118/graphic/1416988 @@ -0,0 +1,65 @@ +graphic: 0.895 +performance: 0.839 +architecture: 0.823 +kernel: 0.790 +semantic: 0.752 +device: 0.724 +ppc: 0.723 +debug: 0.626 +files: 0.597 +TCG: 0.596 +PID: 0.587 +network: 0.564 +vnc: 0.555 +register: 0.553 +socket: 0.542 +mistranslation: 0.505 +risc-v: 0.484 +arm: 0.463 +peripherals: 0.415 +permissions: 0.403 +VMM: 0.358 +user-level: 0.340 +assembly: 0.334 +hypervisor: 0.319 +boot: 0.298 +x86: 0.288 +i386: 0.234 +virtual: 0.189 +KVM: 0.188 + +Wrong signal handling in qemu-aarch64. + +Running GCC 5.0 testsuite under qemu-aarch64, I noticed that tests connected with stack unwinding fail with: + +qemu: uncaught target signal 11 (Segmentation fault) - core dumped + +or run into infinite loop. + +Here is one example: + +$ /home/max/build/gcc-aarch64/gcc/xgcc -B/home/max/build/gcc-aarch64/gcc/ /home/max/src/toolchain/gcc/gcc/testsuite/gcc.dg/cleanup-11.c -fexceptions -fnon-call-exceptions -O2 -lm -o ./cleanup-11.exe + +$ qemu-aarch64 -L /home/max/install/aarch64/aarch64-linux/sys-root/ -R 0 -/cleanup-11.exe +qemu: uncaught target signal 11 (Segmentation fault) - core dumped. + +Actually, this caused by ABI incompatibility between Linux Kernel (trunk) and qemu-aarch64. In fact, size of siginfo structure in Linux and target_siginfo structure in qemu-aarch64 differ: + +sizeof (struct target_siginfo) = 136 // QEMU +sizeof (struct siginfo) = 128 // Linux Kernel + + +This caused by wrong TARGET_SI_PAD_SIZE defined in linux-user/syscall_defs.h: + +#define TARGET_SI_PAD_SIZE ((TARGET_SI_MAX_SIZE/sizeof(int)) - 3) + +In Kernel respective value is: + +#define SI_PAD_SIZE ((SI_MAX_SIZE - __ARCH_SI_PREAMBLE_SIZE) / sizeof(int)) +............................................. +#define __ARCH_SI_PREAMBLE_SIZE (4 * sizeof(int)) // for Aarch64 + +Trivial fix, changing TARGET_SI_PAD_SIZE to right value, is attached. + + + |