Problem with fork() in latest snapshot

Heath Kehoe
Wed Nov 10 19:43:00 GMT 2010

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
    $ ./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
    $ ./testfork
    Before fork
    After fork pid=3808
    subprocess status 32512 (0x7f00)

Note the missing 'After fork' message from the child and the -127 exit 

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)

This email has been scanned by the MessageLabs Email Security System.
For more information please visit 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: testfork.tgz
Type: application/octet-stream
Size: 1608 bytes
Desc: not available
URL: <>
-------------- next part --------------
Problem reports:
Unsubscribe info:

More information about the Cygwin mailing list