|
From: Ed S. <ES...@fe...> - 2010-06-07 13:27:04
|
Valgrind kills my process because of an unrecognized instruction. I suspect the commercial Pegasus image decoder I am using contains opcodes that may be valid for other architectures such as AMD but not the Intel architecture I am currently running on. Or perhaps they have some encoded opcodes for IP protection issues that they somehow extract at run-time. I really do not know. Question: Is there a way to Valgrind to stay out of a shared library? ==1460== valgrind: Unrecognised instruction at address 0x9ceb615. ==1460== Your program just tried to execute an instruction that Valgrind ==1460== did not recognise. There are two possible reasons for this. ==1460== 1. Your program has a bug and erroneously jumped to a non-code ==1460== location. If you are running Memcheck and you just saw a ==1460== warning about a bad jump, it's probably your program's fault. ==1460== 2. The instruction is legitimate but Valgrind doesn't handle it, ==1460== i.e. it's Valgrind's fault. If you think this is the case or ==1460== you are not sure, please let us know and we'll try to fix it. ==1460== Either way, Valgrind will now raise a SIGILL signal which will ==1460== probably kill your program. ==1460== Process terminating with default action of signal 4 (SIGILL) ==1460== Illegal opcode at address 0x9CEB615 ==1460== at 0x9CEB615: ??? ==1460== by 0x408755A: picosCallPegasusProc (in /usr/lib/fesvideo/libpicl20.so) ==1460== by 0x408185C: ??? (in /usr/lib/fesvideo/libpicl20.so) ==1460== by 0x4081A56: ??? (in /usr/lib/fesvideo/libpicl20.so) ==1460== by 0x4086AF1: threadfn (in /usr/lib/fesvideo/libpicl20.so) ==1460== by 0x7CF45A: start_thread (in /lib/libpthread-2.5.so) ==1460== by 0x726C4D: clone (in /lib/libc-2.5.so) I am trying to debug a memory leak under Red Hat Enterprise Linux 5.2 32-bit in an application that uses a 3rd part commercial image decoder made by Pegasus. Thanks in advance for any tips or direction, -Ed |