X-Recipient: archive-cygwin@delorie.com
X-SWARE-Spam-Status: No, hits=-1.9 required=5.0 	tests=AWL,BAYES_00,SARE_MSGID_LONG40,SPF_PASS
X-Spam-Check-By: sourceware.org
MIME-Version: 1.0
In-Reply-To: <loom.20090717T144655-62@post.gmane.org>
References: <20090715185636.GA16211@ednor.casa.cgf.cx> 	 <4A5F59A1.1060902@gmail.com> 	 <20090716195552.GU27613@calimero.vinschen.de> 	 <20090716211823.GC22617@ednor.casa.cgf.cx> 	 <20090717085727.GW27613@calimero.vinschen.de> 	 <4A607EE5.5050306@gmail.com> 	 <20090717134114.GX27613@calimero.vinschen.de> 	 <loom.20090717T140900-805@post.gmane.org> <4A608C72.2010504@gmail.com> 	 <loom.20090717T144655-62@post.gmane.org>
Date: Wed, 22 Jul 2009 10:24:34 +0200
Message-ID: <6910a60907220124p1e4fed27kc82869cad4b0f88b@mail.gmail.com>
Subject: Re: libsigsegv error handling (was: perl threads on 2008 R2 64bit)
From: Reini Urban <rurban@x-ray.at>
To: cygwin@cygwin.com
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
X-IsSubscribed: yes
Mailing-List: contact cygwin-help@cygwin.com; run by ezmlm
Precedence: bulk
List-Id: <cygwin.cygwin.com>
List-Unsubscribe: <mailto:cygwin-unsubscribe-archive-cygwin=delorie.com@cygwin.com>
List-Subscribe: <mailto:cygwin-subscribe@cygwin.com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin@cygwin.com>
List-Help: <mailto:cygwin-help@cygwin.com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner@cygwin.com
Mail-Followup-To: cygwin@cygwin.com
Delivered-To: mailing list cygwin@cygwin.com

2009/7/17 Eric Blake:
> Dave Korn writes:
>
>> =A0 That looks fairly robust to me, shouldn't give us any problems. =A0Q=
uestion
>> 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 ()
> {
> =A0/* We cannot insert any handler into the chain, because such handlers
> =A0 =A0 must lie on the stack (?). =A0Instead, we have to replace(!) Cygw=
in's
> =A0 =A0 global exception handler. =A0*/
> =A0cygwin_exception_handler =3D _except_list->handler;
> =A0_except_list->handler =3D libsigsegv_exception_handler;
> }
>
> static void
> install_main_exception_filter ()
> {
> =A0static int main_exception_filter_installed =3D 0;
>
> =A0if (!main_exception_filter_installed)
> =A0 =A0{
> =A0 =A0 =A0do_install_main_exception_filter ();
> =A0 =A0 =A0main_exception_filter_installed =3D 1;
> =A0 =A0}
> }
>
> It looks like it is installed, never uninstalled. =A0And although the cur=
rent
> release of libsigsegv is a static-only library, Bruno is proud of the fac=
t that
> his libsigsegv package can be provided as a dynamic library even on cygwi=
n (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 w=
ith
> 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.
--=20
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

