On Nov 16, 2010, at 9:41 AM, Corinna Vinschen wrote: > On Nov 10 13:43, Heath Kehoe wrote: >> I have ruby 1.9.2 which I built from source. It works fine in cygwin >> 1.7.7 and earlier, but in the current snapshot when it does a fork, >> the child process dies pretty much instantly. >> >> I've put together a test case (see attached) which replicates what >> ruby is doing so that this problem can be repro'd without needing to >> build ruby. It seems that the failure only happens when the fork >> call is in a dll, and it also seems to depend on manipulating >> threads in close proximity to the fork. >> >> Here's the test program under 1.7.7: >> >> $ uname -a >> CYGWIN_NT-6.1-WOW64 hkehoe1 1.7.7(0.230/5/3) 2010-08-31 09:58 i686 >> Cygwin >> $ ./testfork >> Before fork >> After fork pid=5060 >> After fork pid=0 >> subprocess status 0 (0x0) >> >> And here it is in the snapshot: >> >> $ uname -a >> CYGWIN_NT-6.1-WOW64 hkehoe1 1.7.8s(0.233/5/3) 20101102 14:03:08 i686 >> Cygwin >> $ ./testfork >> Before fork >> After fork pid=3808 >> subprocess status 32512 (0x7f00) >> >> >> Note the missing 'After fork' message from the child and the -127 >> exit status. >> >> An strace of testfork will reveal this error occurring shortly after >> the fork returns in the child: >> --- Process 2944, exception C0000005 at 610E4B8C >> (the process ID is the child's) > > Would you mind to test which snapshot introduced this problem?
I apologize for the delay, but I've had an abrupt career change (the entire studio was closed down). I had to resubscribe under a new email address. And I'm using 32-bit Win7 now instead of 64-bit Win7. But I do have some more information: -- Beginning with snapshot 20100901, the test program produces no output. -- Beginning with snapshot 20100926, the test program produces output consistent with the newest snapshots (no output from the child process; child process exits -127) -- If I run the test program in strace (under any snapshot), it produces correct output and the child exits 0, however I see an exception message in the strace output: --- Process 3848, exception C0000005 at 610E114A (oddliy, the process ID is that of the parent, not the child) -- Running the test program in strace under 1.7.7, I also get a similar exception message in the strace output even though the test program appears to work correctly. -heath -- 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