Summary: | unhandled instruction bytes: 0xF 0xB 0x78 0x65 | ||
---|---|---|---|
Product: | [Developer tools] valgrind | Reporter: | Robert Ellison <papillo> |
Component: | vex | Assignee: | Julian Seward <jseward> |
Status: | REPORTED --- | ||
Severity: | crash | CC: | memecode, njn, tom |
Priority: | NOR | ||
Version: | 3.4.1 | ||
Target Milestone: | --- | ||
Platform: | Compiled Sources | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: |
Description
Robert Ellison
2009-04-29 19:07:32 UTC
If I'm reading my manuals right then 0x0F 0x0B is the "UD2" instruction, whose only purpose is to generate an invalid opcode exception... As that's exactly what valgrind has apparently done it's a bit surprising it has killed the program. Maybe we didn't quite fill in the siginfo in the way it was expecting. It would probably be better if Valgrind handled UD2 distincly, not in a "I don't know what this instruction is" way. Ie. if it just raised the exception without the message. A user who hit this had a suggested workaround, something like: > #ifndef NDEBUG > #include <valgrind/valgrind.h> > #else > #define RUNNING_ON_VALGRIND 0 > #endif > > main() > { > ..... > if (RUNNING_ON_VALGRIND) > signal(SIGILL, dummy_valgrind_handler) > else > signal(SIGILL, normal_sigill_handler) which is hacky but better than nothing. *** Bug 410562 has been marked as a duplicate of this bug. *** |