2009/7/17 Eric Blake: > Dave Korn 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).
Good catch! I'll try the dll ASAP (putting clisp-2.48, parrot-1.4.0 and postgresql-8.4.0 back in the pipeline) > Is there a chance that this represents a bug in > libsigsegv SEH handling that needs to be reported upstream? I'll report that, if it turns out so. -- Reini Urban http://phpwiki.org/ http://murbreak.at/ -- 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