Description of problem: The backtrace() function crashes somewhere in libgcc when called from a signal handler. Version-Release number of selected component (if applicable): gcc/libgcc 3.2.3-34 How reproducible: Always Steps to Reproduce: 1. run attached program (bt-test.c) Actual results: See attached file (output.txt) Expected results: No crashes inside the crashhandler Additional info: 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.
http://gcc.gnu.org/ml/gcc-patches/2004-06/msg00402.html
ftp://people.redhat.com/jakub/glibc/errata/3.2.3-37/
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. http://rhn.redhat.com/errata/RHBA-2004-385.html