Summary: | valgrind seems to not recognize what would be sse2 instructions | ||
---|---|---|---|
Product: | [Developer tools] valgrind | Reporter: | Daniel Villeneuve <dvilleneuve> |
Component: | memcheck | Assignee: | Julian Seward <jseward> |
Status: | RESOLVED FIXED | ||
Severity: | critical | ||
Priority: | NOR | ||
Version: | 3.3.0 | ||
Target Milestone: | --- | ||
Platform: | Compiled Sources | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: |
Description
Daniel Villeneuve
2008-02-12 23:16:18 UTC
> vex x86->IR: unhandled instruction bytes: 0x66 0x9C 0x59 0x8B
This is not an SSE2 instruction, just a strange form of a "normal"
one (pushfw).
Try this: in VEX/priv/guest-x86/toIR.c, find this
case 0x9C: /* PUSHF */ {
vassert(sz == 2 || sz == 4);
if (sz != 4) goto decode_failure; // XXX
vassert(sz == 4); // wait for sz==2 test case // XXX
[...]
remove or comment out the lines marked XXX
make clean
make install
try again.
It might crash again; in which case check carefully to see if it
has failed on the same instruction, or a different one.
Let me know if this works / does not work.
Julian Seward wrote: > Try this: in VEX/priv/guest-x86/toIR.c, find this > > case 0x9C: /* PUSHF */ { > vassert(sz == 2 || sz == 4); > if (sz != 4) goto decode_failure; // XXX > vassert(sz == 4); // wait for sz==2 test case // XXX > [...] > > remove or comment out the lines marked XXX > try again. I did it and it crashed on a similar instruction: vex x86->IR: unhandled instruction bytes: 0x66 0x9D 0x66 0x9C I've looked into the same file and found 0x9D to be POPF, so I tried the same medicine as above. With both patches, valgrind is able to move past that point in the program. Is it safe to make this modified version available right now to my coworkers, or should I wait for the next official release? Regards, -- Daniel Villeneuve Kronos, AD OPT Division > Is it safe to make this modified version available right
> now to my coworkers,
Probably. I had a quick look at the POPF stuff and it looks ok
for the sz==2 case too. In any case if these instructions are
not correctly implemented, it's likely the application would have
died in some obvious way soon afterwards.
Fixed (vex r1835). Fix will be in 3.3.1. |