X-Recipient: archive-cygwin@delorie.com
X-Spam-Check-By: sourceware.org
Date: Wed, 15 Jul 2009 14:56:36 -0400
From: Christopher Faylor <cgf-use-the-mailinglist-please@cygwin.com>
To: cygwin@cygwin.com
Subject: Re: perl threads on 2008 R2 64bit = crash ( was: perl 5.10 threads  on 1.5.25 = instant crash )
Message-ID: <20090715185636.GA16211@ednor.casa.cgf.cx>
Reply-To: cygwin@cygwin.com
Mail-Followup-To: cygwin@cygwin.com
References: <F24D5DF71BEC447DB0E080A0D6451ABB@multiplay.co.uk>  <20090714205617.GA12534@ednor.casa.cgf.cx>  <8541BCA91FF64580AA7A8065FBF9C938@multiplay.co.uk>  <39B3B148DA514671BB2E1AE46946169C@multiplay.co.uk>  <20090715000331.GA5635@ednor.casa.cgf.cx>  <6D01817BC10A4430AFE7A590CC935C09@multiplay.co.uk>  <20090715152139.GA694@calimero.vinschen.de>  <4A5DFDDF.2000904@gmail.com>  <20090715162243.GL14502@ednor.casa.cgf.cx>  <4A5E0AB1.9020201@gmail.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <4A5E0AB1.9020201@gmail.com>
User-Agent: Mutt/1.5.20 (2009-06-14)
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

On Wed, Jul 15, 2009 at 05:58:25PM +0100, Dave Korn wrote:
>Christopher Faylor wrote:
>> On Wed, Jul 15, 2009 at 05:03:43PM +0100, Dave Korn wrote:
>>> Corinna Vinschen wrote:
>>>
>>>> What happens is that this statement
>>>>
>>>>   if ((*object)->magic != magic)
>>>>
>>>> in the function thread.cc:verifyable_object_isvalid throws an exception
>>>> because *object is NULL.  This should be covered by the myfault handler
>>>> in this function but for some reason it isn't.
>>>  So, set a "*object == 0" conditional breakpoint on that line and see what
>>> the SEH chain looks like?
>> 
>> But the point is that this shouldn't have caused a SEGV.
>
>  Don't understand quite what you're alluding to.  Where did Corinna refer to
>a SEGV?  Unless we're using the words differently, a SEGV is a signal, which
>is a cygwin posix construct generated in response to an unhandled x86 access
>violation exception.  Corinna said that the call to v_o_i caused an
>*exception*, as dereferencing a NULL pointer always does, and that it should
>have been covered by the myfault handler (which as far as I know works by
>wrapping an SEH handler around the block of protected code, and using it to
>catch exceptions and longjmp back to the receiver) and which might lead to a
>SEGV signal being generated somewhere a long way down the road if it failed to
>catch the exception, but I'm just concentrating on the point of failure.
>Hence my suggestion to breakpoint it just before the exception happens and see
>what the state of the SEH chain looks like.

The point is that this is generating the equivalent of a SEGV without
ever hitting Cygwin's "SEH" code.  Setting a breakpoint on the line
would likely just show you the call stack but would not provide any
insight into why the myfault was not invoked.

cgf

--
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

