delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2017/12/09/16:57:30

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: <cygwin.cygwin.com>
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs>
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: <b431898c-30f5-2847-c922-0f25a525ef76 AT yahoo DOT fr> <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 <Brian DOT Inglis AT SystematicSw DOT ab DOT ca>
Message-ID: <da3c44fe-42be-739e-78f2-6d0cedd88e9e@SystematicSw.ab.ca>
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>
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

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019