How hard/easy is it to turn on validation to be always on?
- Mark
Lassi Tuura wrote:
Hi,
Thanks Arun. I suspect the git version would fix the crash I saw, if
it occurred at the exact same address in the first page again, however
I wanted to understand the likelihood of getting a crash at some other
place in the future.
The likelihood depends on the compiler version used, presence of handwritten
asm, third party libraries without proper unwind information etc.
There are better solutions possible (eg: implementing interfaces to query
valid stack addresses in the threading library you're using), but they require
modifications to other pieces of low level code (eg: libc).
We found that when interrupted by signals - such as sampling performance
profiler - it's essential to turn the validation always on. Otherwise sooner or
later the application will crash in libunwind accessing bad memory address.
By far the biggest reason for this is inaccurate unwind information for
function epilogues - the exit paths from the function don't have any unwind
info, causing endless havoc if you happen to sample the stack there. There have
been a number of recent updates to GCC on this, but I am not sure if they all
made it even to 4.5.0 which was released just a few days ago. Anything before
4.5.0 is certainly prone to have significant issues of this sort.
GDB will also fail to produce a useful stack trace in comparable circumstances.
The fix needs to come from the compiler.
Similar caveats of course apply to debug info produced by other means. One
version of GLIBC I looked at has incorrect (manually entered) unwind info for
at least one function.
Regards,
Lassi
_______________________________________________
Libunwind-devel mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/libunwind-devel
_______________________________________________
Libunwind-devel mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/libunwind-devel