On Aug 9, 2010, at 9:51 AM, Jan Dubois wrote:

> I tried to look into this on the weekend, but ran out of time.  I didn't
> get *any* segfaults though, neither from 16destroy.t nor from any of the
> samples below.
> 
> I *did* only get 18 passing tests instead of 20 from 16destroy.t though.

Yes, I think we've fixed that. Hope to commit it today once I have confirmation 
of my patch.

> exit() should not prevent DESTROY methods and END blocks from being called,
> but I haven't checked what happens during global destruction.
> 
> The way to exit without any further processing whatsoever is POSIX::_exit().
> On Windows however this will terminate both parent and child in a forking
> scenario because they are threads in the same process, and POSIX::_exit()
> will terminate the whole process, not just the current thread.

That seems to be what's happening. The current code calls exit() in the child 
thread, and that kills the parent, too, but DESTROY apparently isn't called. 
Which is odd.

>> Will try and let you know.
> 
> Can you let me know Perl version is actually giving you a segfault?  I tried
> both 5.10.1 and 5.12.1 and neither crashed, just didn't print any results for
> tests 19 and 20.

Some details in the previous thread here:

  groups.google.com/group/perl.dbi.dev/browse_thread/thread/f683b62a637aeb76

Cosimo was getting segfaults with:

  This is perl, v5.10.0 built for MSWin32-x86-multi-thread. 

Best,

David

Reply via email to