|
From: Mike W. <mik...@ve...> - 2007-05-29 20:22:35
|
Julian Seward wrote: >> I believe you are right about the shared library. Do you have any >> suggestions on how to find the offending symbol? >> > > Here's what I do. You need to figure out which shared library it is in > and the text segment offset. Here is an example. Suppose V complains > that the illegal opcode is at 0x4627124. I rerun with -v, and get a > lot of lines like this > > --23824-- Reading syms from /usr/lib/libXext.so.6.4.0 (0x40D2000) > --23824-- object doesn't have a symbol table > --23824-- Reading syms from /usr/lib/libXt.so.6.0.0 (0x40E1000) > --23824-- object doesn't have a symbol table > --23824-- Reading syms from /usr/lib/libX11.so.6.2.0 (0x4131000) > --23824-- object doesn't have a symbol table > > [...] > > This sometimes (often, even), works, but sometimes not. YMMV. > > > Thanks for the suggestion. Unfortunately, the address where the illegal instruction is occurring is nowhere near any of the library addresses, and it looks like it's actually on the heap somewhere, according to /proc/$pid/maps. Is the core file Valgrind generates of any use in this situation? |