Comment 2 for bug 889985

Revision history for this message
Ulrich Weigand (uweigand) wrote :

Could you elaborate on the system environment where you're seeing this problem (in particular, exact version of the libgcc and gdb packages)?

Generally speaking, GDB tries three methods to unwind the stack:

- DWARF Call Frame Information records
This is the most precise method (correct at every IP), but it is only available if you have debugging info. In a default Ubuntu installation, all system libraries *have* debug info, but it is stripped off into a separate debuginfo package, which is not installed by default.

- ARM exception table entries
This is usually correct (except if your current IP is within function prologue or epilogue code), but it is only available if required for C++ exception handling: that is, if the function is not a leaf function, and if it is either compiled as C++ or as C with the -fexceptions flag. [ Note that I do not think the ARM ABI requires anything more than that. Could you elaborate on which document you're consulting? The "ARM ABI" is a family of multiple documents, and in none of them I found a section 2.1.1 ... ]

- Prologue parsing (i.e. reading the assembler instructions at function start)
This is not always reliable, but usually a pretty good heuristic. If this does not work for a frequently used system library function, we can (and should) always work on improving that heuristic ... That's why I'd like to know the specific details so I can have a look.