X-Recipient: archive-cygwin AT delorie DOT com DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:reply-to:subject:to:references:from:message-id :date:mime-version:in-reply-to:content-type :content-transfer-encoding; q=dns; s=default; b=gf8t/vV7QR1URlq7 tP/Vd4oxfHEws6QRAbgjWVxiWo3fqPQ1zuzfXiWRkCskSqZkl0HtbX1NW0B799x2 ds3Gz+iTiLqMw+hkLB+7f4C3nC0n2pCCkRSsB+zvVFzCMAwGZmp9I3aEyzgE9Oob y93ipfTi+A8oq7vi+YICBf9Qf7Y= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:reply-to:subject:to:references:from:message-id :date:mime-version:in-reply-to:content-type :content-transfer-encoding; s=default; bh=Keaum0iS4jVzSyJz0aD5SC RgTNA=; b=oVx9yEsc7FzZcd1lIQgrJBGly0FUGn73PHuu6bMFSohPV2zuUb68KG 84Nkdm5u0Mnh9ZXvPomiUc49pLCcMO02R5N5bLll3LHejfqfjlGT1F7TeycFVrz3 SQ75a7395RMtf2Rlm0Q6MXwy3k1f1Ovi7ETOLoZi/mnsTUOhgDxS0= Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Id: 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 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.9 required=5.0 tests=AWL,BAYES_00,KAM_LAZY_DOMAIN_SECURITY,RCVD_IN_DNSWL_LOW autolearn=no version=3.3.2 spammy=Resource, calgary, H*Ad:D*ca, 5168 X-HELO: smtp-out-no.shaw.ca X-Authority-Analysis: v=2.2 cv=b+PC2pOx c=1 sm=1 tr=0 a=MVEHjbUiAHxQW0jfcDq5EA==:117 a=MVEHjbUiAHxQW0jfcDq5EA==:17 a=N659UExz7-8A:10 a=tUIJT-X9uJ4hWQWMBxoA:9 a=wUnfT_OwsfjsOKp6:21 a=eTqw0FranJThBJWm:21 a=pILNOxqGKmIA:10 Reply-To: Brian DOT Inglis AT SystematicSw DOT ab DOT ca Subject: Re: fork fails after nmap with hint address in an unmapped memory region To: cygwin AT cygwin DOT com References: <15510444518 DOT 20171209184819 AT yandex DOT ru> <42c71a45-e61b-6917-b634-e912fb51d2d5 AT yahoo DOT fr> <56047a39-4e1e-fa50-0e8b-c123c5b5ed3c AT SystematicSw DOT ab DOT ca> From: Brian Inglis Message-ID: Date: Sat, 9 Dec 2017 14:57:10 -0700 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.5.0 MIME-Version: 1.0 In-Reply-To: <56047a39-4e1e-fa50-0e8b-c123c5b5ed3c@SystematicSw.ab.ca> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 8bit X-CMAE-Envelope: MS4wfHfiFo8TGNuNZzFt8YysYwYCRiYjNR7NNOuSVTHcPMoid+Mwdqdq/Cbu85Iab/BJHH1UYpf2C5sJWdCie2I0Hu5dGAmdIs9Sxf0XKEJf7Qn0H4HmbeH9 WGEVVavZ1YyE/kOts/jB4a2fmtIE9CE1pEowDsVi33ft+itQV/vAZ9NeqqDpwh2orFHEnQ9wZ5BjUA== X-IsSubscribed: yes On 2017-12-09 11:29, Brian Inglis wrote: > On 2017-12-09 08:53, Stéphane Mbape via cygwin wrote: >> Le 09/12/2017 à 16:48, Andrey Repin a écrit : >>>> While embeding luajit in a c program, I found myself unable to fork >>>> processes. >>>> Investigations prove that it was related to nmap. >>>> To be accurate, calling nmap with hint address in a unmapped memory >>>> region will cause all forks to fail with >>>> "fixup_mmaps_after_fork: ReadProcessMemory failed for MAP_PRIVATE >>>> address 0x6FFFFFE0000, Win32 error 299" >>>> There is a sample code below. >>> You forgot to mention Cygwin version you're using, and please provide the >>> sample as an attach to save people the copy-pasting issues. >> Cygwin version: 2.9.0 >> OS: Windows 10 >> Arch: 64bit >> The sample was also attached. > > Confirmed reproducible; addr2line does not give anything useful from the > stackdump, but included raw stackdump below, in case it gives hints. > Complete output after renaming doscript.c to mmap_fork_stc.c, also with addr + > 4096 as well as addr + 1: > > $ gcc -g -O0 -o mmap_fork_stc{,.c} > $ ./mmap_fork_stc > I am master 5464 > nmap() = 0x6fffffe0000, hint_addr = 0x0 > nmap() = 0x6fffffe0000, hint_addr = 0x6fffffe1000 > 1 [main] mmap_fork_stc 11408 fixup_mmaps_after_fork: ReadProcessMemory > failed for MAP_PRIVATE address 0x6FFFFFE0000, Win32 error 299 > 286 [main] mmap_fork_stc 11408 ...\mmap_fork_stc.exe: *** fatal error in > forked process - recreate_mmaps_after_fork_failed > 1298 [main] mmap_fork_stc 11408 cygwin_exception::open_stackdumpfile: Dumping > stack trace to mmap_fork_stc.exe.stackdump > 0 [main] mmap_fork_stc 5464 fork: child -1 - forked process 11408 died > unexpectedly, retry 0, exit code 0x100, errno 11 > fork failed: Resource temporarily unavailable > master exiting Test works if you use addr + 65536 or addr + sysconf(_SC_PAGE_SIZE), as another thread reminded me about mmap region alignment to 64KB boundaries. $ ./mmap_fork_stc I am master 1888 nmap() = 0x6fffffe0000, hint_addr = 0x0 nmap() = 0x6ffffff0000, hint_addr = 0x6ffffff0000 I am worker 5168 worker exiting master exiting Perhaps mmap() should round up/down address arguments to this alignment when they should be treated as hints. -- Take care. Thanks, Brian Inglis, Calgary, Alberta, Canada -- 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