diff options
Diffstat (limited to 'results/classifier/118/mistranslation-x86/1773743')
| -rw-r--r-- | results/classifier/118/mistranslation-x86/1773743 | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/results/classifier/118/mistranslation-x86/1773743 b/results/classifier/118/mistranslation-x86/1773743 new file mode 100644 index 000000000..42ef80534 --- /dev/null +++ b/results/classifier/118/mistranslation-x86/1773743 @@ -0,0 +1,90 @@ +mistranslation: 0.990 +user-level: 0.938 +x86: 0.910 +performance: 0.750 +device: 0.740 +semantic: 0.739 +graphic: 0.724 +vnc: 0.657 +debug: 0.634 +architecture: 0.613 +ppc: 0.601 +peripherals: 0.581 +network: 0.520 +permissions: 0.507 +socket: 0.506 +PID: 0.476 +VMM: 0.449 +register: 0.433 +hypervisor: 0.432 +risc-v: 0.423 +files: 0.422 +kernel: 0.419 +i386: 0.414 +TCG: 0.413 +virtual: 0.330 +boot: 0.277 +arm: 0.238 +KVM: 0.215 +assembly: 0.158 +-------------------- +debug: 0.965 +x86: 0.947 +user-level: 0.885 +hypervisor: 0.569 +virtual: 0.264 +TCG: 0.122 +files: 0.036 +PID: 0.023 +performance: 0.023 +network: 0.018 +semantic: 0.015 +register: 0.011 +kernel: 0.009 +device: 0.007 +assembly: 0.005 +socket: 0.005 +ppc: 0.004 +architecture: 0.004 +VMM: 0.004 +KVM: 0.003 +peripherals: 0.003 +graphic: 0.002 +boot: 0.002 +permissions: 0.002 +vnc: 0.001 +i386: 0.001 +risc-v: 0.001 +mistranslation: 0.001 +arm: 0.000 + +qemu-user -g xxx -E LD_PROFILE=xxx segfault + +Here is two simple steps to reproduce the bug: + +$ qemu-x86_64 -E LD_PROFILE=libc.so.6 -E LD_PROFILE_OUTPUT=. -g 12345 -L / /bin/ls + +(libc.so and /bin/ls might change on your system, in this case we just need a binary with a profilable needed library) + +In a other window launch: + +$ gdb +(gdb) target remote :12345 +(gdb) c + +At this point qemu will segfault. + +It seems this problem is appends when sigprof passed to gdb. +One way I have found to bypass this: +patch gdbstub.c gdb_handlesig and ignore sig if +sig == TARGET_SIGPROF +(which means now I can't catch sigprof on gdb anymore) + +We were mis-parsing the 'vCont' packet in the gdb protocol, so when gdb told us "send a SIGPROF (0x1b)" we skipped the first digit in the hex signal number and interpreted it as "send an 0xb", which happens to be SIGSEGV. + +Should be fixed by this: +https://<email address hidden>/ + + +https://gitlab.com/qemu-project/qemu/-/commit/3ddd9036389f5f577e09 + |