Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Message-ID: <15514.12648.934526.894670@asv-058.sjc.ca.bbnow.net> Date: Thu, 21 Mar 2002 11:15:52 -0800 From: Stephen Weeks To: cygwin AT cygwin DOT com Subject: Re: mmap of large amount returns invalid pointer In-Reply-To: <20020319115739.U29574@cygbert.vinschen.de> X-Mailer: VM 6.89 under 21.1 (patch 14) "Cuyahoga Valley" XEmacs Lucid > 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/