www.delorie.com/archives/browse.cgi | search |
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
webmaster | delorie software privacy |
Copyright © 2019 by DJ Delorie | Updated Jul 2019 |