From dee4dcba78baf712cab403d47d9db319ab7f95d6 Mon Sep 17 00:00:00 2001 From: Christian Krinitsin Date: Thu, 3 Jul 2025 19:39:53 +0200 Subject: restructure results --- results/classifier/017/semantic/1156313 | 179 -------------------------------- 1 file changed, 179 deletions(-) delete mode 100644 results/classifier/017/semantic/1156313 (limited to 'results/classifier/017/semantic') diff --git a/results/classifier/017/semantic/1156313 b/results/classifier/017/semantic/1156313 deleted file mode 100644 index 2427c3f3..00000000 --- a/results/classifier/017/semantic/1156313 +++ /dev/null @@ -1,179 +0,0 @@ -semantic: 0.869 -permissions: 0.861 -mistranslation: 0.841 -user-level: 0.828 -peripherals: 0.806 -operating system: 0.796 -assembly: 0.789 -device: 0.777 -architecture: 0.769 -risc-v: 0.752 -VMM: 0.749 -PID: 0.742 -debug: 0.729 -performance: 0.727 -register: 0.720 -x86: 0.710 -ppc: 0.708 -arm: 0.706 -vnc: 0.702 -alpha: 0.701 -kernel: 0.682 -graphic: 0.657 -TCG: 0.645 -hypervisor: 0.626 -virtual: 0.625 -socket: 0.605 -files: 0.600 -boot: 0.576 -network: 0.533 -KVM: 0.518 -i386: 0.511 --------------------- -x86: 0.943 -assembly: 0.861 -operating system: 0.178 -debug: 0.028 -files: 0.011 -TCG: 0.007 -kernel: 0.006 -hypervisor: 0.006 -register: 0.005 -user-level: 0.004 -architecture: 0.004 -semantic: 0.003 -PID: 0.002 -device: 0.002 -performance: 0.002 -virtual: 0.002 -VMM: 0.001 -boot: 0.001 -KVM: 0.001 -risc-v: 0.001 -vnc: 0.001 -graphic: 0.001 -permissions: 0.000 -socket: 0.000 -ppc: 0.000 -network: 0.000 -peripherals: 0.000 -mistranslation: 0.000 -alpha: 0.000 -i386: 0.000 -arm: 0.000 - -X86-64 flags handling broken - -The current qemu sources cause improper handling of flags on x86-64. -This bug seems to have shown up a few weeks ago. - -A plain install of Debian GNU/Linux makes user processes catch -spurious signals. The kernel seems to run stably, though. - -The ADX feature works very poorly. It might be related; at least it -allows for reproducibly provoking invalid behaviour. - -Here is a test case: - -================================================================ -qemumain.c -#include -long adx(); -int -main () -{ - printf ("%lx\n", adx (0xffbeef, 17)); - return 0; -} -================================================================ -qemuadx.s: - .globl adx -adx: xor %rax, %rax -1: dec %rdi - jnz 1b - .byte 0xf3, 0x48, 0x0f, 0x38, 0xf6, 0xc0 # adox %rax, %rax - .byte 0x66, 0x48, 0x0f, 0x38, 0xf6, 0xc0 # adcx %rax, %rax - ret -================================================================ - -Compile and execute: -$ gcc -m64 qemumain.c qemuadx.s -$ a.out -ffffff8000378cd8 - -Expected output is simply "0". The garbage value varies between qemu -compiles and guest systems. - -Note that one needs a recent GNU assembler in order to handle adox and -adcx. For convenience I have supplied them as byte sequences. - -Exaplanation and feeble analysis: - -The 0xffbeef argument is a loop count. It is necessary to loop for a -while in order to trigger this bug. If the loop count is decreased, -the bug will seen intermittently; the lower the count, the less -frequent the invalid behaviour. - -It seems like a reasonable assumption that this bug is related to -flags handling at context switch. Presumably, qemu keeps flags state -in some internal format, then recomputes then when needing to form the -eflags register, as needed for example for context switching. - -I haven't tried to reproduce this bug using qemu-x86_64 and SYSROOT, -but I strongly suspect that to be impossible. I use -qemu-system-x86_64 and the guest Debian GNU/Linux x86_64 (version -6.0.6) . - -The bug happens also with the guest FreeBSD x86_64 version 9.1. (The -iteration count for triggering the problem 50% of the runs is not the -same when using the kernel Linux and FreeBSD's kernel, presumably due -to different ticks.) - -The bug happens much more frequently for a loaded system; in fact, the -loop count can be radically decreased if two instances of the trigger -program are run in parallel. - -Richard Henderson