Here are some hints that may help you debug this:
The address in your backtrace is an address in the address space of the process at the time it crashed. That means that, if you want to translate it into a 'physical' address relative to the start of the .text
section of your library, you have to subtract the start address of the relevant section of pmap
from the address in your backtrace.
Unfortunately, this means that you need a pmap
of the process before it crashed. I admittedly have no idea whether loading addresses for libraries on a single system are constant if you close and rerun it (imaginably there are security features which randomize this), but it certainly isn't portable across systems, as you have noticed.
In your position, I would try:
- demangling the symbol names with
c++filt -n
or manually. I don't have a shell right now, so here is my manual attempt:_ZN11ICAPSection7processEP12CONNECTION_TP7Filebufi
isICAPSection::process(CONNECTION_T *, Filebuf *, int)
. This may already be helpful. If not: - use
objdump
ornm
(I'm pretty sure they can do that) to find the address corresponding to the mangled name, then add the offset (+0x6af
as per your stacktrace) to this, then look up the resulting address withaddr2line
.