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 Jul 15 01:41, Steven Hartland wrote:
> ----- Original Message ----- From: "Christopher Faylor"
>> On Wed, Jul 15, 2009 at 12:36:56AM +0100, Steven Hartland wrote:
>>> This may or may not help:
>>> According to VC++ debugger it always dies with:
>>> Unhandled exception at 0x610d089d in perl.exe: 0xC0000005: Access violation reading location 0x00000004.
>> No, sorry, it really doesn't help. The VC++ debugger doesn't know how
>> to handle cygwin exceptions.
> Was just trying to get a hint of the area of the problem since gdb doesn't
> actually break when it happens this seemed to be the only way to get that
> Any pointers on how I can help narrow down the issue?
I can reproduce the problem on my 2008 R2 box. It works fine on Windows
7 x64, though, so it's a Server thingy.
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.
To debug this further I created a STC(TM)(*) which does the same as the
Perl testcase, just in pure C:
==== SNIP ====
void *thr (void *arg)
printf ("I'm a thread\n");
int i, r;
fprintf (stderr, "Testing threads...\n");
i = pthread_attr_init (&attr);
printf ("i = %d\n", i);
r = pthread_create (&t, &attr, thr, NULL);
fprintf (stderr, "pthread_create: %d %s\n", errno, strerror (errno));
pthread_join (t, &ret);
fprintf (stderr, "Testing done\n");
==== SNAP ====
The problem is, this testcase works fine, even on 2008 R2. It must
have something to do with the way Perl creates thread or does its
own exception handling. I just don't know what to look for.
Corinna Vinschen Please, send mails regarding Cygwin to
Cygwin Project Co-Leader cygwin AT cygwin DOT com
Problem reports: http://cygwin.com/problems.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple