summary refs log tree commit diff stats
path: root/results/classifier/zero-shot-user-mode/output/instruction/1877794
diff options
context:
space:
mode:
Diffstat (limited to 'results/classifier/zero-shot-user-mode/output/instruction/1877794')
-rw-r--r--results/classifier/zero-shot-user-mode/output/instruction/18777949
1 files changed, 9 insertions, 0 deletions
diff --git a/results/classifier/zero-shot-user-mode/output/instruction/1877794 b/results/classifier/zero-shot-user-mode/output/instruction/1877794
new file mode 100644
index 000000000..1d3db8fe8
--- /dev/null
+++ b/results/classifier/zero-shot-user-mode/output/instruction/1877794
@@ -0,0 +1,9 @@
+instruction: 0.579
+runtime: 0.243
+syscall: 0.179
+
+
+
+Constant Folding on 64-bit Subtraction causes SIGILL on linux-user glxgears ppc64le to x86_64 by way of generating bad shift instruction with c=-1
+
+Hello, I've been recently working on my own little branch of QEMU implementing the drm IOCTLs, when I discovered that glxgears seems to crash in GLXSwapBuffers(); with a SIGILL. I investigated this for about 2 weeks, manually trying to trace the call stack, only to find that we seemingly crash in a bad shift instruction. Originally intended to be an shr_i64 generated to an RLDICL, we end up with an all ones(-1) c value, which gets thrown to the macro for generating the MB, and replaces the instruction with mostly ones. This new instruction, FFFFFFE0 is invalid on ppc64le, and crashes in a host SIGILL in codegen_buffer. I tried to see if the output of translate.c had this bad instruction, but all I got were two (shr eax, cl) instructions, and upon creating a test program with shr (eax, cl) in it, nothing happened. Then figuring that there was nothing actually wrong with the instruction in the first place, I turned my eye to the optimizer, and completely disabled constant folding for arithmetic instructions.  This seemed to actually resolve the issue, and then I slowly enabled constant folding again on various instructions only to find that enabling not on the shifts, but on subtraction seemed to cause the bug to reappear. I am bewildered and frankly at this point I'm not sure I have a chance in hell of figuring out what causes it, so I'm throwing it here.
\ No newline at end of file