This is the mail archive of the
cygwin
mailing list for the Cygwin project.
libsigsegv error handling (was: perl threads on 2008 R2 64bit)
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