Summary: | vex amd64->IR: unhandled instruction bytes: bound (0x4F 0x62 0x6A 0x65) | ||
---|---|---|---|
Product: | [Developer tools] valgrind | Reporter: | Hamish Rodda <rodda> |
Component: | vex | Assignee: | Julian Seward <jseward> |
Status: | RESOLVED NOT A BUG | ||
Severity: | normal | ||
Priority: | NOR | ||
Version: | unspecified | ||
Target Milestone: | --- | ||
Platform: | Compiled Sources | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | ||
Sentry Crash Report: |
Description
Hamish Rodda
2005-09-11 16:47:47 UTC
This is a BOUND instruction. What is odd is that it has a REX prefix and you're running 64 bit code but the AMD manual says BOUND is invalid in 64 bit mode and that it will always generate an invalid opcode fault in 64 bit mode. That strongly suggests that your application has gone wrong and has jumped through a bad pointer and is no longer executing valid code. Unfortunately KDE seems to have caught the SIGILL so we're not getting a backtrace to tell us what address the invalid instruction was at. Hint: start your application with --nocrashhandler or set the KDE_DEBUG environment variable to anything. Hamish, is this bug still alive? Considering Tom's comments I'd like to close it as invalid unless it is still biting you. Note that there is still an open bug (bug 105227) complaining about BOUND in 32 bit code. That's doable; however I'm not sure what's supposed to happen if the bounds test fails. The Intel docs say an INT 5 is generated. What does that look like after the kernel delivers it to userspace? I'd guess we have to synth a signal of some flavour, but what? By turning off the crash handler I was able to identify the problem with the code which was causing this problem. I can't recall if I managed to fix the code (don't think so, it was a complex problem iirc). So, from my point of view Valgrind is not doing anything more incorrect than giving a bit of a cryptic error message. You can close this, thanks. I'll close this then. |