From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-qt1-x82a.google.com (mail-qt1-x82a.google.com [IPv6:2607:f8b0:4864:20::82a]) by sourceware.org (Postfix) with ESMTPS id 41FDA3858D32 for ; Thu, 13 Apr 2023 12:53:08 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 41FDA3858D32 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-qt1-x82a.google.com with SMTP id d75a77b69052e-3e9b0bc9e06so1310341cf.0 for ; Thu, 13 Apr 2023 05:53:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1681390387; x=1683982387; h=mime-version:user-agent:message-id:in-reply-to:date:references :subject:to:from:from:to:cc:subject:date:message-id:reply-to; bh=R1zfuMTiAOIqO9Ps7/SmOcz1WdCCS+UkhNEOVEzr6b8=; b=EKAEpSLTtbMAd7hNuNkKIXS6Vff6BLzeWuLqQT76SIVWe5eS1K2zNAjORTJon45b8C HVEJi85rzJNfWbL084N+qyMYAEXA8ykWUbkuBM+mgZ5/rWmIvnbxW1gpOtdVVWP1cLeX aMOHSUyomnqyPFOJkPVBwSU3+Nb8HVF3v7LAYmqzdlJdY5yYduflt4sMTSAf2tuo4b8q svGE7235osTWdyhgZ9BrQ+DLUsOy2IHVhFW1ib+MAa2PeHK1gzqpBxUOox+swuoQ1VuQ XKSWXW4+qTehadNhewXx1uhtKi63gGV0ev1tjW5RDz6wN13VWzSVwx3dFgInHf8OG+Og TVpA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1681390387; x=1683982387; h=mime-version:user-agent:message-id:in-reply-to:date:references :subject:to:from:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=R1zfuMTiAOIqO9Ps7/SmOcz1WdCCS+UkhNEOVEzr6b8=; b=Txdw8xCJsjeP6KdYV1GDjypDGxxhOUjVcCqdxbk8JH9pNIYs4rMegXt59wIw/sKPQR 36nHTDbzIBBLc+RLuTSP5gp361LDmbou8tDq1l/APlUhtzjuXgG1wRrVygH151UzKt5Q aAsHEFq1pbBKO6eyMHaxDPLQnYbzKKf3Cwez0eTcJHaaXnnEOObB58wnrYEKRdYxTEZk MkXjpsPddPAgEz3pV3yIBCaT4YXPhjF0lKA/HYm9DWmeqDsOJrRZ2NtkcPkweliNI3Kd MC3Zei/mpdm6MPgxzaPvjV4O0lL5RD0MOFdlfTlwNfFcDpF58/cAbQdzdsGlrbShdHMU seMg== X-Gm-Message-State: AAQBX9cFHN4y0u7Zsmc0JPosggGS/ZErVpF6vP8b9IR1COuWDNgydlfK LWMs1zj21NKSkMpPbE0mHzM87D5kOb4= X-Google-Smtp-Source: AKy350Z6Kue0GypQsOppV2HyEHVGYGQKKD+8ARemFQXrxdQ0+GqLqsylgS/3Gp+qvyE9MvrIVewWVw== X-Received: by 2002:ac8:59d5:0:b0:3b8:6c6e:4949 with SMTP id f21-20020ac859d5000000b003b86c6e4949mr2858648qtf.4.1681390387349; Thu, 13 Apr 2023 05:53:07 -0700 (PDT) Received: from office-nix (hlfxns018gw-134-41-48-72.dhcp-dynamic.fibreop.ns.bellaliant.net. [134.41.48.72]) by smtp.gmail.com with ESMTPSA id w8-20020ac843c8000000b003e8160cf93asm452462qtn.80.2023.04.13.05.53.06 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 13 Apr 2023 05:53:07 -0700 (PDT) From: David McFarland To: cygwin-developers@cygwin.com Subject: Re: [PATCH] Cygwin: cygheap: fix fork error after heap has grown References: <20230413023517.62725-1-corngood@gmail.com> Date: Thu, 13 Apr 2023 09:53:06 -0300 In-Reply-To: <20230413023517.62725-1-corngood@gmail.com> (David McFarland's message of "Wed, 12 Apr 2023 23:35:17 -0300") Message-ID: <87fs946j0t.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.2 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Status: No, score=-10.4 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: David McFarland writes: > 2f9b8ff0 introduced a problem where forks would sometimes fail with: > > child_copy: cygheap read copy failed, 0x0..0x80044C750, done 0, windows pid 14032, Win32 error 299 > > When cygheap_max was > CYGHEAP_STORAGE_INITIAL, commit_size would be set to > allocsize(cygheap_max), which is an address, not a size. VirtualAlloc would be > called to commit commit_size bytes, which would fail, and then child_copy would > be called with zero as the base address. > --- > winsup/cygwin/mm/cygheap.cc | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/winsup/cygwin/mm/cygheap.cc b/winsup/cygwin/mm/cygheap.cc > index 6a20c159a..d614fc7a9 100644 > --- a/winsup/cygwin/mm/cygheap.cc > +++ b/winsup/cygwin/mm/cygheap.cc > @@ -87,7 +87,7 @@ cygheap_fixup_in_child (bool execed) > SIZE_T commit_size = CYGHEAP_STORAGE_INITIAL - CYGHEAP_STORAGE_LOW; > > if (child_proc_info->cygheap_max > (void *) CYGHEAP_STORAGE_INITIAL) > - commit_size = allocsize (child_proc_info->cygheap_max); > + commit_size = allocsize (child_proc_info->cygheap_max) - CYGHEAP_STORAGE_LOW; > cygheap = (init_cygheap *) VirtualAlloc ((LPVOID) CYGHEAP_STORAGE_LOW, > CYGHEAP_STORAGE_HIGH > - CYGHEAP_STORAGE_LOW, It might be better to do the subtraction before the call to allocsize, but this should still work in practice. I'll wait for more feedback before I post another patch.