Red Hat Bugzilla – Bug 125204
Backtrace does not work from signalhandler
Last modified: 2007-11-30 17:07:02 EST
Description of problem:
The backtrace() function crashes somewhere in libgcc when called from
a signal handler.
Version-Release number of selected component (if applicable):
Steps to Reproduce:
1. run attached program (bt-test.c)
See attached file (output.txt)
No crashes inside the crashhandler
SuSE SLES8 had the same problem and I solved it by linking libgcc to
libunwind.so (the package from David Mosberger from HP) so it uses
the unwinding functions from libunwind. Attached you will find the
patches I created for the gcc source rpm for SuSE, I hope they will
apply properly to the gcc sources since the SuSE gcc was 3.2.2 and
this is 3.2.3. But this will give you the idea to fix this. You need
version 0.97 otherwise it will not work either (at least that was my
experience with SuSE).
Created attachment 100841 [details]
Output of the test program
Created attachment 100842 [details]
The test program
Created attachment 100843 [details]
Proposed patch that fixed this on SLES8
Version 0.97 of libunwind that is.
We have finally tested this (lack of system to test on) and it works
perfectly according to me and some of my colleagues. Thanks for
fixing it ! Now we just need to know when we can expect this patch to
appear somewhere in a service pack/quarterly update/hotfix/whatever.
An errata has been issued which should help the problem
described in this bug report. This report is therefore being
closed with a resolution of ERRATA. For more information
on the solution and/or where to find the updated files,
please follow the link below. You may reopen this bug report
if the solution does not work for you.