This is the mail archive of the
mailing list for the Cygwin project.
Re: perl threads on 2008 R2 64bit = crash ( was: perl 5.10 threads on 1.5.25 = instant crash )
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.
Problem reports: http://cygwin.com/problems.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple