From patchwork Thu Sep 23 21:53:57 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stafford Horne X-Patchwork-Id: 45402 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 375A63857C4A for ; Thu, 23 Sep 2021 21:54:29 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 375A63857C4A DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1632434069; bh=1VhT8pqHenovl7YnsQSP1pkaLVfBlMY+PO53Z4f5MeA=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:From; b=xaEDcscCQffMJWwLgUMpkvBeaN2XwO5MMzEitk7kXqCafS+2YnsJ6hsLR0nU77yBd N1YOP35X/0cUiWe9gZtmL1w2KSzS9IJ42wpb47dosc5YRuXFXALYxk4ACX155g/MwT K8w1btHSA8NJ1/KYpKsiLFmtqKrL7/DxWb3kpDmg= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-pg1-x52b.google.com (mail-pg1-x52b.google.com [IPv6:2607:f8b0:4864:20::52b]) by sourceware.org (Postfix) with ESMTPS id 8CBC33858D34 for ; Thu, 23 Sep 2021 21:54:08 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 8CBC33858D34 Received: by mail-pg1-x52b.google.com with SMTP id 81so4184377pgb.0 for ; Thu, 23 Sep 2021 14:54:08 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=1VhT8pqHenovl7YnsQSP1pkaLVfBlMY+PO53Z4f5MeA=; b=Y727Gb9g3+mAcW/fHx2UuLiVf40GpyKKcVerSYKRgzpN0AZLFO7JCPt+7OQessUrzn FXxc5frZ8ssoDp3sdo1xONh1jAKhlun7WNI2AOVSjrzmreEf7wQxjWB66qS7TtBT9iG2 iilrR1IZuYFzYC5DONsg8p8+NzKggfRWwUAvmyc5b58WLNFgryyjzLGFP8V07mXWgb7c 1Fd10DYN4T4goYHzY8hQ0bgWr7N6oEwnz5Qhb792/meRi6rw9Oqah432WXNQmbor6Zyy AuTG0Ij0/gp5fNLSB320r6FnXsETyngqq9XNRAFq21MqGWWAoO/fyW21/7TUM+ZHPrKE mb3Q== X-Gm-Message-State: AOAM5333nzfzOnwuVkcDqkGQL6+Pi4RKiPhz4tmKlPtBMocbKzCp6bqw fLVUyn5FbpfhPiHKcyQpOG/7T0QqFjs= X-Google-Smtp-Source: ABdhPJw+CE/+9nUkpGaqcFEaWxfrqsrxorC2ATIsLaxaNOxXB++S6droATAw7ELqZze0WHWAzm2hwA== X-Received: by 2002:a63:cf0c:: with SMTP id j12mr796618pgg.411.1632434047287; Thu, 23 Sep 2021 14:54:07 -0700 (PDT) Received: from localhost (g22.61-45-46.ppp.wakwak.ne.jp. [61.45.46.22]) by smtp.gmail.com with ESMTPSA id k22sm6748637pfi.149.2021.09.23.14.54.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Sep 2021 14:54:06 -0700 (PDT) To: GLIBC patches Subject: [PATCH] Fix issue with successful malloc setting ENOMEM errno Date: Fri, 24 Sep 2021 06:53:57 +0900 Message-Id: <20210923215357.2962606-1-shorne@gmail.com> X-Mailer: git-send-email 2.31.1 MIME-Version: 1.0 X-Spam-Status: No, score=-10.3 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.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Stafford Horne via Libc-alpha From: Stafford Horne Reply-To: Stafford Horne Errors-To: libc-alpha-bounces+patchwork=sourceware.org@sourceware.org Sender: "Libc-alpha" When testing nptl/tst-pthread-attr-affinity-fail fails with: error: xsysconf.c:33: sysconf (83): Cannot allocate memory error: 1 test failures This happens as xsysconf checks the errno after running sysconf. Internally the sysconf request for _SC_NPROCESSORS_CONF on linux allocates memory. But there is a problem, even though malloc succeeds errno is getting set to ENOMEM. I have traced it as explained below. On my platform the memory allocation is non-contiguous so we see malloc do: 1 brk (0) - queries brk 2 brk (addr + increment) - fails and sets ERRNO due to, current vm address space not being large enough. 3 mmap - gets a new address space 4 malloc succeeds - however ERRNO is still set to ENOMEM, due to 2 This patch clears errno after the fallback mmap call succeeds. --- malloc/malloc.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/malloc/malloc.c b/malloc/malloc.c index 12dfaec81e..7d85238e0a 100644 --- a/malloc/malloc.c +++ b/malloc/malloc.c @@ -2705,6 +2705,9 @@ sysmalloc (INTERNAL_SIZE_T nb, mstate av) brk = mbrk; snd_brk = brk + size; + /* If MORECORE failed it may have set ENOMEM, clear that. */ + __set_errno (0); + /* Record that we no longer have a contiguous sbrk region. After the first time mmap is used as backup, we do not