[Bug libstdc++/35555] New: Throw from signal handler - regression

asteinarson at gmail dot com gcc-bugzilla@gcc.gnu.org
Wed Mar 12 15:39:00 GMT 2008


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



More information about the Gcc-bugs mailing list