This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

AltStyle によって変換されたページ (->オリジナル) /