libsigsegv error handling (was: perl threads on 2008 R2 64bit)

Eric Blake ebb9@byu.net
Fri Jul 17 17:17:00 GMT 2009


Dave Korn <dave.korn.cygwin <at> googlemail.com> writes:

>   That looks fairly robust to me, shouldn't give us any problems.  Question
> is, what does the code that hooks and unhooks the exception handler look like,
> and where does it get called from?

static void
do_install_main_exception_filter ()
{
  /* We cannot insert any handler into the chain, because such handlers
     must lie on the stack (?).  Instead, we have to replace(!) Cygwin's
     global exception handler.  */
  cygwin_exception_handler = _except_list->handler;
  _except_list->handler = libsigsegv_exception_handler;
}

static void
install_main_exception_filter ()
{
  static int main_exception_filter_installed = 0;

  if (!main_exception_filter_installed)
    {
      do_install_main_exception_filter ();
      main_exception_filter_installed = 1;
    }
}

It looks like it is installed, never uninstalled.  And although the current 
release of libsigsegv is a static-only library, Bruno is proud of the fact that 
his libsigsegv package can be provided as a dynamic library even on cygwin (in 
other words, the current cygwin maintainer of the libsigsegv package could 
decide to pass the right configure options to make libsigsegv a .dll, at which 
point a rebuild of m4 would then be subject to issues of a .dll playing with 
the exception filter).  Is there a chance that this represents a bug in 
libsigsegv SEH handling that needs to be reported upstream?

-- 
Eric Blake



--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple



More information about the Cygwin mailing list