Valgrind output showing addresses not code against errors
I am running Valgrind on my program. It shows me two errors but mentions only addresses against them and not actual code even on a debug build.
Could you pls. help me understand what it says and how to reach the erroneous line of code?
The output is
==23002== Memcheck, a memory error detector.
==23002== Copyright (C) 2002-2005, and GNU GPL'd, by Julian Seward et al.
==23002== Using LibVEX rev 1575, a library for dynamic binary translation.
==23002== Copyright (C) 2004-2005, and GNU GPL'd, by OpenWorks LLP.
==23002== Using valgrind-3.1.1, a dynamic binary instrumentation framework.
==23002== Copyright (C) 2000-2005, and GNU GPL'd, by Julian Seward et al.
==23002== For more details, rerun with: -v
==23002==
==23002== Invalid read of size 4
==23002== at 0x8AAE6D: open_path (in /lib/ld-2.3.4.so)
==23002== by 0x8AB68B: _dl_map_object (in /lib/ld-2.3.4.so)
==23002== by 0x8AF307: openaux (in /lib/ld-2.3.4.so)
==23002== by 0x8B066D: _dl_catch_error (in /lib/ld-2.3.4.so)
==23002== by 0x8AF5A9: _dl_map_object_deps (in /lib/ld-2.3.4.so)
==23002== by 0x8A6459: dl_main (in /lib/ld-2.3.4.so)
==23002== by 0x8B3DF4: _dl_sysdep_start (in /lib/ld-2.3.4.so)
==23002== by 0x8A53EF: _dl_start (in /lib/ld-2.3.4.so)
==23002== by 0x8A47C6: (within /lib/ld-2.3.4.so)
==23002== Address 0x2F8BBBF8 is not stack'd, malloc'd or (recently) free'd
==23002==
==23002== Process terminating with default action of signal 11 (SIGSEGV)
==23002== Access not within mapped region at address 0x2F8BBBF8
==23002== at 0x8AAE6D: open_path (in /lib/ld-2.3.4.so)
==23002== by 0x8AB68B: _dl_map_object (in /lib/ld-2.3.4.so)
==23002== by 0x8AF307: openaux (in /lib/ld-2.3.4.so)
==23002== by 0x8B066D: _dl_catch_error (in /lib/ld-2.3.4.so)
==23002== by 0x8AF5A9: _dl_map_object_deps (in /lib/ld-2.3.4.so)
==23002== by 0x8A6459: dl_main (in /lib/ld-2.3.4.so)
==23002== by 0x8B3DF4: _dl_sysdep_start (in /lib/ld-2.3.4.so)
==23002== by 0x8A53EF: _dl_start (in /lib/ld-2.3.4.so)
==23002== by 0x8A47C6: (within /lib/ld-2.3.4.so)
==23002==
==23002== Jump to the invalid address stated on the next line
==23002== at 0x246: ???
==23002== Address 0x246 is not stack'd, malloc'd or (recently) free'd
==23002==
==23002== Process terminating with default action of signal 11 (SIGSEGV)
==23002== Bad permissions for mapped region at address 0x246
==23002== at 0x246: ???
==23002==
==23002== ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0)
==23002== malloc/free: in use at exit: 0 bytes in 0 blocks.
==23002== malloc/free: 0 allocs, 0 frees, 0 bytes allocated.
==23002== For counts of detected errors, rerun wi开发者_如何学Pythonth: -v
==23002== All heap blocks were freed -- no leaks are possible.
That address looks bogus. Forget valgrind, fire up gdb to find where your program is segfaulting.
There's no debugging information because the indicated code is within the ld-2.3.4.so
library (this is the dynamic linker).
It looks to me like your executable is linked against a corrupted dynamic library file (or are trying to load a file that isn't a dynamic library through that mechanism).
精彩评论