This is the same bug as 34152 but in a slightly new version in GCC 4.3.0. When trying to convert a SIGSEGV signal to a C++ exception, GCC dies and dumps a core.
This was working in GCC 4.2.1 with patches mentioned in 34152. I changed eh_personality.cc slightly, to verify that the right code path is chosen: #ifdef _GLIBCXX_HAVE_GETIPINFO printf("_GLIBCXX_HAVE_GETIPINFO\n"); ip = _Unwind_GetIPInfo (context, &ip_before_insn); #else printf("! _GLIBCXX_HAVE_GETIPINFO\n"); ip = _Unwind_GetIP (context); #endif >From my test program, I get this output: Constructor: Count 0 Constructor: Count 1 _GLIBCXX_HAVE_GETIPINFO terminate called after throwing an instance of 'char const*' _GLIBCXX_HAVE_GETIPINFO Aborted (core dumped) So, the patch that previously fixed the problem is used, but the problem has re-appeared in 4.3.0. Regards // ATS -- Summary: Throw from signal handler - regression Product: gcc Version: 4.3.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libstdc++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: asteinarson at gmail dot com GCC build triplet: i686-pc-linux-gnu GCC host triplet: i686-pc-linux-gnu GCC target triplet: i686-pc-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35555