From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-oo1-xc2e.google.com (mail-oo1-xc2e.google.com [IPv6:2607:f8b0:4864:20::c2e]) by sourceware.org (Postfix) with ESMTPS id 05E573858D28 for ; Fri, 31 Mar 2023 15:39:19 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 05E573858D28 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=linaro.org Received: by mail-oo1-xc2e.google.com with SMTP id s19-20020a4adb93000000b00540fa505f2dso203281oou.7 for ; Fri, 31 Mar 2023 08:39:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1680277158; h=content-transfer-encoding:in-reply-to:organization:from:references :cc:to:content-language:subject:user-agent:mime-version:date :message-id:from:to:cc:subject:date:message-id:reply-to; bh=m9joQPdRAW5hRbwP8c2YG3KNOjUSaIV+BhuXQiOr4UU=; b=X4q/wsGf+wAkuQ3jaFjVtEpzyuga7g2JeQhMWmYa0P1hmxU8RwXlPUqaUqWFlf4RZ9 Hi8pTKhUD6La/zIYeFYVbOmL2E8s0LV3Wt0X1y/MpNQ7F1vz0uqCI76g3UctVMte+hjI wiX93+WKqnR7aRoJyx7VG3p9SUDyKPC5I2jldp0p130mAg+qrlvElf+CP8XHv/A8YKZo U4dYQHybLpVr1d97lO7ZxTDs9UW4jpzomlyUDvnW1unh13+LK9cWFtPUL/JIdtB0q16o pyQcznX3783lYNaTmNeqxCRUEBI99Tgiz6yOrxqIijiB0m0ciUZdUXdrh9JioUV5SXdk 1x3A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680277158; h=content-transfer-encoding:in-reply-to:organization:from:references :cc:to:content-language:subject:user-agent:mime-version:date :message-id:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=m9joQPdRAW5hRbwP8c2YG3KNOjUSaIV+BhuXQiOr4UU=; b=Nt713coleEx7OoO0oocwBj5LQ8pvDhFTLon4kwchwqFOTAsJqQalSti22K8hayB/hA hPXX8bO0/wd0m3AvA6sM2EqbF3pNE3IrlxkxNzXn9QZOFa5DlzeUg24ilKASVSH/QeM4 NF6TTL8t4+XVHxdfg5PBo3WcWp0oYS5+DdWYayIF/Y5K/TBnent7X6kstJh7StX+l+bT va8UoL24TPuMQJWuT55JHgz/16efXFWrSoneyb1CZAxePMB4Ufq1deQIwDwfWj+UQMbD 0ag7GtH93ukmjWPfdDLgIYTHWKoZtmL3XtGPlbX+ghtO/x30nMwQBYKJ2hFLkjxSyXOr gAEg== X-Gm-Message-State: AO0yUKULzoWMWoTQBK+7sggti/7leZn8gFyt1n5oMVdhGjLOfIYovyKo v3pyzu1oxxAPy9aSZ1jPRt9NX8iFC5cKM3JeUQtNag== X-Google-Smtp-Source: AK7set/iPjeWsQp1SISFZRrZSYCdmM+NsDllfogRhjdJIu2dXxOnLZpE43xav4L6foNVq1gJ3XrIXg== X-Received: by 2002:a4a:52d4:0:b0:53b:4e7f:8bde with SMTP id d203-20020a4a52d4000000b0053b4e7f8bdemr12995271oob.4.1680277158168; Fri, 31 Mar 2023 08:39:18 -0700 (PDT) Received: from ?IPV6:2804:1b3:a7c1:60f9:4ca7:df5c:ca4c:27b4? ([2804:1b3:a7c1:60f9:4ca7:df5c:ca4c:27b4]) by smtp.gmail.com with ESMTPSA id o14-20020a4aabce000000b0053b40ab0711sm904106oon.44.2023.03.31.08.39.16 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 31 Mar 2023 08:39:17 -0700 (PDT) Message-ID: <6276d55e-e8da-ec1d-ad8e-56c8727b0bf6@linaro.org> Date: Fri, 31 Mar 2023 12:39:14 -0300 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.9.0 Subject: Re: [PATCH v5 1/1] memalign: Support scanning for aligned chunks. Content-Language: en-US To: DJ Delorie Cc: libc-alpha@sourceware.org, =?UTF-8?Q?Cristian_Rodr=c3=adguez?= References: From: Adhemerval Zanella Netto Organization: Linaro In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-6.0 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,NICE_REPLY_A,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: On 29/03/23 01:20, DJ Delorie wrote: > From e32abda27e5c0aa82f4b736fdca35d56bf665cce Mon Sep 17 00:00:00 2001 > From: DJ Delorie via Libc-alpha > Date: Wed, 29 Mar 2023 00:18:40 -0400 > Subject: memalign: Support scanning for aligned chunks. > > This patch adds a chunk scanning algorithm to the _int_memalign code > path that reduces heap fragmentation by reusing already aligned chunks > instead of always looking for chunks of larger sizes and splitting > them. The tcache macros are extended to allow removing a chunk from > the middle of the list. > > The goal is to fix the pathological use cases where heaps grow > continuously in workloads that are heavy users of memalign. > > Note that tst-memalign-2 checks for tcache operation, which > malloc-check bypasses. So it seems this patch does trigger a regression. I am seeing on a speccpu2017 benchmark (cam4_s) failure: **************************************** Contents of cam4_s_base.gcc-64.err **************************************** Fatal glibc error: malloc.c:3617 (_mid_memalign): assertion failed: !p || chunk_is_mmapped (mem2chunk (p)) || ar_ptr == arena_for_chunk (mem2chunk (p)) Fatal glibc error: malloc.c:3617 (_mid_memalign): assertion failed: !p || chunk_is_mmapped (mem2chunk (p)) || ar_ptr == arena_for_chunk (mem2chunk (p)) Fatal glibc error: malloc.c:3617 (_mid_memalign): assertion failed: !p || chunk_is_mmapped (mem2chunk (p)) || ar_ptr == arena_for_chunk (mem2chunk (p)) Fatal glibc error: malloc.c:3617 (_mid_memalign): assertion failed: !p || chunk_is_mmapped (mem2chunk (p)) || ar_ptr == arena_for_chunk (mem2chunk (p)) Fatal glibc error: malloc.c:3617 (_mid_memalign): assertion failed: !p || chunk_is_mmapped (mem2chunk (p)) || ar_ptr == arena_for_chunk (mem2chunk (p)) Fatal glibc error: malloc.c:3617 (_mid_memalign): assertion failed: !p || chunk_is_mmapped (mem2chunk (p)) || ar_ptr == arena_for_chunk (mem2chunk (p)) Fatal glibc error: malloc.c:3617 (_mid_memalign): assertion failed: !p || chunk_is_mmapped (mem2chunk (p)) || ar_ptr == arena_for_chunk (mem2chunk (p)) Fatal glibc error: malloc.c:3617 (_mid_memalign): assertion failed: !p || chunk_is_mmapped (mem2chunk (p)) || ar_ptr == arena_for_chunk (mem2chunk (p)) Fatal glibc error: malloc.c:3617 (_mid_memalign): assertion failed: !p || chunk_is_mmapped (mem2chunk (p)) || ar_ptr == arena_for_chunk (mem2chunk (p)) Fatal glibc error: malloc.c:3617 (_mid_memalign): assertion failed: !p || chunk_is_mmapped (mem2chunk (p)) || ar_ptr == arena_for_chunk (mem2chunk (p)) Fatal glibc error: malloc.c:3617 (_mid_memalign): assertion failed: !p || chunk_is_mmapped (mem2chunk (p)) || ar_ptr == arena_for_chunk (mem2chunk (p)) Fatal glibc error: malloc.c:3617 (_mid_memalign): assertion failed: !p || chunk_is_mmapped (mem2chunk (p)) || ar_ptr == arena_for_chunk (mem2chunk (p)) Fatal glibc error: malloc.c:3617 (_mid_memalign): assertion failed: !p || chunk_is_mmapped (mem2chunk (p)) || ar_ptr == arena_for_chunk (mem2chunk (p)) Fatal glibc error: malloc.c:3617 (_mid_memalign): assertion failed: !p || chunk_is_mmapped (mem2chunk (p)) || ar_ptr == arena_for_chunk (mem2chunk (p)) Fatal glibc error: malloc.c:3617 (_mid_memalign): assertion failed: !p || chunk_is_mmapped (mem2chunk (p)) || ar_ptr == arena_for_chunk (mem2chunk (p)) Program received signal SIGABRT: Process abort signal. Fatal glibc error: malloc.c:3617 (_mid_memalign): assertion failed: !p || chunk_is_mmapped (mem2chunk (p)) || ar_ptr == arena_for_chunk (mem2chunk (p)) Fatal glibc error: malloc.c:3617 (_mid_memalign): assertion failed: !p || chunk_is_mmapped (mem2chunk (p)) || ar_ptr == arena_for_chunk (mem2chunk (p)) Fatal glibc error: malloc.c:3617 (_mid_memalign): assertion failed: !p || chunk_is_mmapped (mem2chunk (p)) || ar_ptr == arena_for_chunk (mem2chunk (p)) Fatal glibc error: malloc.c:3617 (_mid_memalign): assertion failed: !p || chunk_is_mmapped (mem2chunk (p)) || ar_ptr == arena_for_chunk (mem2chunk (p)) I have not yet isolated the malloc calls patterns, but I would like to give you a heads up that this does seems to be an issue with at least on reproduce.