> Could you please describe what happens in the error case > in plain English? I see that there could be a timing problem in > fork() but I'd like to read how the error looks like.
The process mmaps some memory, writes to the memory, and then forks. After the fork, the parent unmaps the memory and exits, while the child reads from the memory. From looking at the strace, I see that the Cygwin fork implementation allows the parent process to continue before ensuring that the child has completed the memory copy. In this case, the parent unmaps the memory before the child can copy it. Hence, we see the following line in the strace, which indicates the failure in the child process (138). 1813 914381 [main] fork 138 fixup_mmaps_after_fork: ReadProcessMemory failed for MAP_PRIVATE address 0x2A230000, Win32 error 998 c:\sweeks\tmp\fork.exe: *** recreate_mmaps_after_fork_failed -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Bug reporting: http://cygwin.com/bugs.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/