|
From: Jeremy F. <je...@go...> - 2005-02-17 01:34:40
|
Nicholas Nethercote wrote:
> I get the following
>
> [~/grind/head2] gdb coregrind/valgrind core
> GNU gdb 5.3
> [...]
> This GDB was configured as "i686-pc-linux-gnu"...
> Core was generated by `/u/njn/grind/head2/coregrind/valgrind date'.
> Program terminated with signal 11, Segmentation fault.
> #0 0xb805ab88 in ?? ()
> (gdb) x/i $eip
> 0xb805ab88: Cannot access memory at address 0xb805ab88
>
> Does that mean it jumped to an address that had no underlying mapping?
Yep, that means there was nothing at that address; the SEGV was from the
instruction fetch rather than from something the instruction did.
While it is sitting crashed in GDB, you can look at /proc/<pid>/maps to
see where 0xb805ab88 lies in relationship to everything else in the
address space. That might give you a clue about what's going wrong.
What happens if you try running the PIE valgrind under a non-PIE
valgrind with (mem|addr)check; does that give any more information? The
trouble with jumps into the void is that there's very little information
about where it came from (hence bug #98993). "x/x $esp" will show you
the top of the stack, which might be a return address.
J
|