X-Recipient: archive-cygwin AT delorie DOT 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: References: <20090715185636 DOT GA16211 AT ednor DOT casa DOT cgf DOT cx> <4A5F59A1 DOT 1060902 AT gmail DOT com> <20090716195552 DOT GU27613 AT calimero DOT vinschen DOT de> <20090716211823 DOT GC22617 AT ednor DOT casa DOT cgf DOT cx> <20090717085727 DOT GW27613 AT calimero DOT vinschen DOT de> <4A607EE5 DOT 5050306 AT gmail DOT com> <20090717134114 DOT GX27613 AT calimero DOT vinschen DOT de> <4A608C72 DOT 2010504 AT gmail DOT com> 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 To: cygwin AT cygwin DOT com Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-IsSubscribed: yes Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT 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