The following trivial code crashes on AIX-5.3 + gcc-4.2.2 (same with gcc-3.4.3): $ cat t.cpp struct A { ~A() { try {throw 1;} catch(...) {} } }; A a; int main() { } $ g++ -g t.cpp $ ./a.out Abort It looks like the libgcc_s.a(shr.o) library is destroyed (along with exception supporting data structures) before the destructor of A has been called. This is done by a function named _GLOBAL__FD_shr_o which seems to be responsible for destruction of all global objects in libgcc. When the destructor of A is called (by _GLOBAL__FD_a_out), exception handling mechanism is already dead. Is there anything constructive I can do to overcome this hurdle? Should I open a PR (unless there is one, already open). As far as I can tell, my code is well specified and defined from the ISO-C+ + point of view, and is accepted on gcc+Linux and xlC+AIX. Only gcc+AIX happens to problematic. Thanks Michael