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

Reply via email to