Attached is a testcase which shows that some registers are clobbered over throwing/catching an exception:
bash>c++ unwind_test.cpp bash>./a.out Checksum not OK ( 42895 != 58377 ). Register corruption in stack unwinding. In the debugger you can see, that the fixed integer registers r4-r7 are not reset correctly during stack unwinding. The value of the callee-saved registers r4-r7 differ before and after the call to test() from main(). This error was reported against gcc-3.3.3 but still happens with gcc 4.1. -- Summary: broken unwind information for many life variables resulting in register corruption Product: gcc Version: 4.1.2 Status: UNCONFIRMED Keywords: EH Severity: normal Priority: P3 Component: middle-end AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: matz at gcc dot gnu dot org GCC host triplet: ia64-linux http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29166