From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-qk1-x736.google.com (mail-qk1-x736.google.com [IPv6:2607:f8b0:4864:20::736]) by sourceware.org (Postfix) with ESMTPS id AE1D93858C50 for ; Tue, 18 Apr 2023 00:41:59 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org AE1D93858C50 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-qk1-x736.google.com with SMTP id af79cd13be357-74df31d83d4so13940985a.1 for ; Mon, 17 Apr 2023 17:41:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1681778519; x=1684370519; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=a7/BHfqDbxdByWkKUQFo4hbC8YKenAPqW5mWOCihrzw=; b=TIyXJhLkT0CSeLhcQjR0eFJpD4YeJiy6zl8Qp6kvSobJx0BCfyfwdkFCtNy08Qaz6q FsmqOCBV0QmKV9wLKN3VbtsETuiLL1F2WUQ/F/4bXy9keTnZMA3Hhdzmva4p7ff68INU pgZXFVx6kgbITfpLe64pXUoIfljRs+mwIgFJknZpEGjU8xV/NQF0XBo81Q8VOKe8F7ro MfstShKvlmnmNPc8TvUj0D1ulI0WQmIKH2q3ovs24Dg1vvhMOEEsl3qZSUO0+Agu1ZNB SUl1aIE9HiysKqDLMzLcJt502US5ohKkQS/lok1z19Pphmp5nL+RNJbNv5Voh9PSxGQ9 7ohg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1681778519; x=1684370519; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=a7/BHfqDbxdByWkKUQFo4hbC8YKenAPqW5mWOCihrzw=; b=FruVN/B+g+evXBsTQS4kVyoI+yfmZO2h+3be3BDfLAVrdSCiVHsyALVYXxgwL0/7TS 32ozyXYJaaXe+O0cb4pxnHsuu04HwyMxG7uACIKK73PkKQTZnBGrBKO8T8DfFDbfW7xY eV7Kl8gMvjO0Lc7U1P14VonchmCbJ2nJCtPuBRVHJqgsQnjlgj0wxwktFWVIzGZ/RxpU NCRn4ASLrOuCUT463KJX5cx7WPFBI6wmzNaKdjuy1b7HRf4mOQLnKFRvcVm8+nFZGIUn 69GtZQcT/OFUWK2NTy2iconcyROigFLPUqzlIUqxhdZT/tYa0fMuLuHW8NYNdGelpprB MxnQ== X-Gm-Message-State: AAQBX9f+AYjNz881EDxocPtQ7T7LND7wN+1eAHiDoiff3yvr1j1pVqRV kUze0zWOHG0ObYMCTFk8K+k3BDnYJAk= X-Google-Smtp-Source: AKy350bVxsv4OYfk0s5dUdFZeulnYJDyNXlcAKX0H2RmFIbINRz4gA5xVKfEXSzUiZBXMu5VV2MofQ== X-Received: by 2002:ac8:7d96:0:b0:3ef:3912:ab3e with SMTP id c22-20020ac87d96000000b003ef3912ab3emr1108867qtd.2.1681778518820; Mon, 17 Apr 2023 17:41:58 -0700 (PDT) Received: from davidm.hb-studios.com (host-24-222-39-213.public.eastlink.ca. [24.222.39.213]) by smtp.gmail.com with ESMTPSA id r1-20020ac87941000000b003df7d7bbc8csm3647131qtt.75.2023.04.17.17.41.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 17 Apr 2023 17:41:58 -0700 (PDT) From: David McFarland To: cygwin-developers@cygwin.com Cc: David McFarland Subject: [PATCH] Cygwin: cygheap: fix fork error after heap has grown Date: Mon, 17 Apr 2023 21:41:55 -0300 Message-Id: <20230418004155.56163-1-corngood@gmail.com> X-Mailer: git-send-email 2.39.0.windows.2.1.gf04e877035 In-Reply-To: <87bkjm6nos.fsf@gmail.com> References: <87bkjm6nos.fsf@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-10.5 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,T_SCC_BODY_TEXT_LINE 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: 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. Fixes: 2f9b8ff00cce ("Cygwin: decouple cygheap from Cygwin DLL") Signed-off-by: David McFarland --- winsup/cygwin/mm/cygheap.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/winsup/cygwin/mm/cygheap.cc b/winsup/cygwin/mm/cygheap.cc index 6a20c159a..a20ee5972 100644 --- a/winsup/cygwin/mm/cygheap.cc +++ b/winsup/cygwin/mm/cygheap.cc @@ -87,7 +87,8 @@ 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 ((char *) child_proc_info->cygheap_max + - CYGHEAP_STORAGE_LOW); cygheap = (init_cygheap *) VirtualAlloc ((LPVOID) CYGHEAP_STORAGE_LOW, CYGHEAP_STORAGE_HIGH - CYGHEAP_STORAGE_LOW, -- 2.39.0.windows.2.1.gf04e877035