From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: AS17314 8.43.84.0/22 X-Spam-Status: No, score=-3.3 required=3.0 tests=AWL,BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,NICE_REPLY_A, RCVD_IN_DNSWL_MED,SPF_HELO_PASS,SPF_PASS,URIBL_BLACK shortcircuit=no autolearn=no autolearn_force=no version=3.4.2 Received: from sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by dcvr.yhbt.net (Postfix) with ESMTPS id 212B21F5AE for ; Sat, 17 Jul 2021 22:03:53 +0000 (UTC) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 3C8AE3836013 for ; Sat, 17 Jul 2021 22:03:52 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 3C8AE3836013 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1626559432; bh=qm+H8N4QQB7AMuTpYa4ZBog7wmQZpdMcxQDLIQNLDGo=; h=Subject:To:References:Date:In-Reply-To:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc: From; b=K9CXtQOGmGYvPMfGNw7VwLu108Dx+rCg2Fb3GLj/8Jba8iZpQeaNqlUHqOKMoGSZ9 zdMbqQ+c9dUcRmQdRVamjSKIaI0E29i3OkpKYkluwmtW9xDP35ToYV6BZck3cVmKqR RyRmxNjvvW8LS++9gxyaZyZSH729xonHUv1g1hHI= Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by sourceware.org (Postfix) with ESMTP id A66593848013 for ; Sat, 17 Jul 2021 22:03:31 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org A66593848013 Received: from mail-qv1-f71.google.com (mail-qv1-f71.google.com [209.85.219.71]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-594-0bv2kp9dMEe94dZJY5b-hQ-1; Sat, 17 Jul 2021 18:03:26 -0400 X-MC-Unique: 0bv2kp9dMEe94dZJY5b-hQ-1 Received: by mail-qv1-f71.google.com with SMTP id jo25-20020a0562145019b0290300a4fa83d8so4988120qvb.23 for ; Sat, 17 Jul 2021 15:03:26 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:organization :message-id:date:user-agent:mime-version:in-reply-to :content-language:content-transfer-encoding; bh=qm+H8N4QQB7AMuTpYa4ZBog7wmQZpdMcxQDLIQNLDGo=; b=AX6WwuLu1O8RpsJrSSUdssCz4ft/8Mo88hw+CzZg93lBQXfesFNuYdcBrlSoLjepE8 ZgLfL3+kpTvvc2N+LAX/xiYayEhJpjyckvNGY8O6Da6GOuIOAJPh5O3YzvYIsKoaSFaf C0gTUOwsaW7B8X0dM5i+68yLH3ejT1IkVStDO+yz4e3bULHYfvDyeklZhe8qeI9CWdra jlqtZ6Yf35flEoFaEXluwaoWcFkYbITcR2IsWv9O6wgy989KMJnmyOZMT1lQdBzfeaKN +1FTEGUOnC8yD0M2sBFt29Ao2n+sXvG8ptR2BVL/Eat1Jc1m9dESiV3yRJ1BcqrUnW/O Ad+A== X-Gm-Message-State: AOAM531ry4gGhXopWTEr1psVZJJwSkMS1R2xlk37OpRAb5moZ4BLcKnq 62nCvadBw0KCNv7ETm8QKqa/mMIR7Ljwv9M1is8S8c20xf8umGKGkcmsNnJbX1XWV+CjyjTkZpp 9E7Ga9NiGQhn5JG0i+OZN X-Received: by 2002:a05:6214:19c7:: with SMTP id j7mr13601955qvc.7.1626559406227; Sat, 17 Jul 2021 15:03:26 -0700 (PDT) X-Google-Smtp-Source: ABdhPJz8TrOqXDoaxJ4xyfWC5DIEJhhZF8NkD/V/38Vs4bDwTIfjccb5eBUukX5Wqi9+3cDnnw6iiA== X-Received: by 2002:a05:6214:19c7:: with SMTP id j7mr13601947qvc.7.1626559406028; Sat, 17 Jul 2021 15:03:26 -0700 (PDT) Received: from [192.168.1.16] (198-84-214-74.cpe.teksavvy.com. [198.84.214.74]) by smtp.gmail.com with ESMTPSA id h10sm5718952qka.83.2021.07.17.15.03.24 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sat, 17 Jul 2021 15:03:25 -0700 (PDT) Subject: Re: [PATCH v8 00/10] malloc hooks removal To: Siddhesh Poyarekar , libc-alpha@sourceware.org References: <20210713073845.504356-1-siddhesh@sourceware.org> Organization: Red Hat Message-ID: <6860d565-43f0-e79e-bbac-d467523a49e5@redhat.com> Date: Sat, 17 Jul 2021 18:03:24 -0400 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.11.0 MIME-Version: 1.0 In-Reply-To: <20210713073845.504356-1-siddhesh@sourceware.org> X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit 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: , From: Carlos O'Donell via Libc-alpha Reply-To: Carlos O'Donell Cc: fweimer@redhat.com Errors-To: libc-alpha-bounces+e=80x24.org@sourceware.org Sender: "Libc-alpha" On 7/13/21 3:38 AM, Siddhesh Poyarekar wrote: > This patchset removes the malloc hooks __malloc_hook, __free_hook, > __realloc_hook and __memalign_hook from the API and leaves compatibility > symbols so that existing applications can continue to link to them. The > reading and execution of the hooks has been moved to a DSO > libc_malloc_debug.so, which can be preloaded for applications that need > it. By default these hooks no longer have any effect in the library. OK for 2.34. Tested without regression on x86_64 and i686. Reviewed-by: Carlos O'Donell Tested-by: Carlos O'Donell Awesome! Thank you for taclking this. I appreciate you sticking with the guidance and feedback on the patch series. > Further, debugging features such as MALLOC_CHECK_, mcheck() and mtrace > have been weaned away from these hooks and also moved to > libc_malloc_debug.so. With this change, these features are only enabled > when libc_malloc_debug.so is preloaded using LD_PRELOAD. As expected. > Finally, the __morecore, __morecore_after_hook and __default_morecore > hooks have also been moved to compat symbols and removed from the API. > Existing applications will continue to link to them but they won't have > any effect on malloc behaviour. As expected. > Testing: > > The patchset has gone through a full build and test on x86_64, i686, > s390x, ppc64le, armv7l and aarch64 through a scratch build on Fedora > rawhide. I also installed a test package on x86_64 and rebooted to make > sure the system boots to shell. I did a build-many-glibcs run with > the patchset and it ran clean on all targets. Awesome. > Changes from v7: > - Made mcheck tests conditional on GLIBC_2.24 > - Added SHLIB_COMPAT guard around __malloc_initialize_hook usage in > libc_malloc_debug.so > - Fixed hurd build failure. > - Add another patch to fix malloc_usable_size to mcheck > > Changes from v6: > - Moved malloc-check into libc_malloc_debug.so. Tweaked malloc.c to > allow building twice, once inside libc.so and next in > libc_malloc_debug.so > - Included morecore.c into malloc.c > - Moved hook initialization too into libc_malloc_debug.so. > - Interposed more functions in libc_malloc_debug.so > - Versioned all symbols exported from libc_malloc_debug.so and finalized > them so that the library cannot be linked against > > Changes from v5: > - Rebased on latest master > - Fixed realloc-mcheck > - Removed residual mention of libmalloc_compathooks > - Removed LD_PRELOAD from elf/tst-setuid > > Changes from v4: > - Patchset has a different approach, starting with moving out hooks > first to restrict all major malloc.c changes to the first patch > - Renamed libmalloc_compathooks.so to libc_malloc_debug.so > - Moved all debugging features into libc_malloc_debug.so > - Made more documentation updates > - Simplified __malloc_initialized variable use > - Removed debugging tests on static variables since that is no longer > supported > > Changes from v3: > - Remove source file dependencies > - Commit mcheck tests > > Changes from v2: > - Move hooks dependencies to malloc.o{,sS} > > Changes from v1: > > - Added makefile dependencies for the new hooks files > - Fixed memset call in calloc debugging hooks > - Added the tr_break deprecation patch and mcheck test patch to this > series > > > Siddhesh Poyarekar (10): > Make mcheck tests conditional on GLIBC_2.24 or earlier > Remove __after_morecore_hook > Remove __morecore and __default_morecore > Move malloc hooks into a compat DSO > mcheck: Wean away from malloc hooks > Simplify __malloc_initialized > mtrace: Wean away from malloc hooks > glibc.malloc.check: Wean away from malloc hooks > Remove malloc hooks > mcheck Fix malloc_usable_size [BZ #22057] > > NEWS | 21 + > Rules | 9 +- > catgets/Makefile | 4 +- > elf/Makefile | 15 +- > elf/tst-leaks1-static.c | 1 - > iconvdata/Makefile | 3 +- > include/malloc.h | 6 - > include/mcheck.h | 4 - > include/stdlib.h | 3 - > intl/tst-gettext.sh | 1 + > libio/Makefile | 12 +- > localedata/Makefile | 3 +- > malloc/Makefile | 56 +- > malloc/Versions | 44 ++ > malloc/arena.c | 48 +- > malloc/hooks.c | 71 ++- > malloc/malloc-check.c | 63 ++- > malloc/malloc-debug.c | 522 ++++++++++++++++++ > malloc/malloc-hooks.h | 24 - > malloc/malloc.c | 163 ++---- > malloc/malloc.h | 27 - > malloc/mcheck-impl.c | 412 ++++++++++++++ > malloc/mcheck.c | 397 +------------ > malloc/morecore.c | 34 +- > malloc/mtrace-impl.c | 226 ++++++++ > malloc/mtrace.c | 313 +---------- > malloc/tst-compathooks-off.c | 145 +++++ > malloc/tst-compathooks-on.c | 2 + > malloc/tst-malloc-usable-static-tunables.c | 1 - > malloc/tst-malloc-usable-static.c | 1 - > malloc/tst-mtrace.sh | 1 + > manual/memory.texi | 207 +------ > manual/tunables.texi | 4 +- > misc/Makefile | 6 +- > nptl/Makefile | 3 +- > posix/Makefile | 48 +- > resolv/Makefile | 9 +- > shlib-versions | 3 + > stdio-common/Makefile | 15 +- > sysdeps/aarch64/Makefile | 3 + > sysdeps/generic/libc_malloc_debug.abilist | 0 > sysdeps/generic/localplt.data | 1 - > sysdeps/mach/hurd/Makefile | 1 + > .../mach/hurd/i386/libc_malloc_debug.abilist | 26 + > sysdeps/mach/hurd/i386/localplt.data | 1 - > sysdeps/pthread/Makefile | 3 +- > .../linux/aarch64/libc_malloc_debug.abilist | 26 + > sysdeps/unix/sysv/linux/aarch64/localplt.data | 1 - > .../linux/alpha/libc_malloc_debug.abilist | 26 + > sysdeps/unix/sysv/linux/alpha/localplt.data | 1 - > .../sysv/linux/arc/libc_malloc_debug.abilist | 26 + > sysdeps/unix/sysv/linux/arc/localplt.data | 1 - > .../linux/arm/be/libc_malloc_debug.abilist | 26 + > .../linux/arm/le/libc_malloc_debug.abilist | 26 + > sysdeps/unix/sysv/linux/arm/localplt.data | 1 - > .../sysv/linux/csky/libc_malloc_debug.abilist | 26 + > sysdeps/unix/sysv/linux/csky/localplt.data | 1 - > .../sysv/linux/hppa/libc_malloc_debug.abilist | 26 + > sysdeps/unix/sysv/linux/hppa/localplt.data | 1 - > sysdeps/unix/sysv/linux/hppa/shlib-versions | 2 + > .../sysv/linux/i386/libc_malloc_debug.abilist | 26 + > sysdeps/unix/sysv/linux/i386/localplt.data | 1 - > .../sysv/linux/ia64/libc_malloc_debug.abilist | 26 + > sysdeps/unix/sysv/linux/ia64/localplt.data | 1 - > sysdeps/unix/sysv/linux/ia64/shlib-versions | 2 + > .../m68k/coldfire/libc_malloc_debug.abilist | 26 + > .../sysv/linux/m68k/coldfire/localplt.data | 1 - > .../m68k/m680x0/libc_malloc_debug.abilist | 26 + > .../unix/sysv/linux/m68k/m680x0/localplt.data | 1 - > .../microblaze/be/libc_malloc_debug.abilist | 26 + > .../microblaze/le/libc_malloc_debug.abilist | 26 + > .../unix/sysv/linux/microblaze/localplt.data | 1 - > .../mips/mips32/fpu/libc_malloc_debug.abilist | 26 + > .../mips32/nofpu/libc_malloc_debug.abilist | 26 + > .../mips/mips64/n32/libc_malloc_debug.abilist | 26 + > .../mips/mips64/n64/libc_malloc_debug.abilist | 26 + > sysdeps/unix/sysv/linux/mips/shlib-versions | 2 + > .../linux/nios2/libc_malloc_debug.abilist | 26 + > sysdeps/unix/sysv/linux/nios2/localplt.data | 1 - > .../powerpc32/fpu/libc_malloc_debug.abilist | 26 + > .../linux/powerpc/powerpc32/fpu/localplt.data | 1 - > .../powerpc32/nofpu/libc_malloc_debug.abilist | 26 + > .../powerpc/powerpc32/nofpu/localplt.data | 1 - > .../powerpc64/be/libc_malloc_debug.abilist | 26 + > .../powerpc64/le/libc_malloc_debug.abilist | 26 + > .../linux/powerpc/powerpc64/localplt.data | 1 - > sysdeps/unix/sysv/linux/riscv/localplt.data | 1 - > .../riscv/rv32/libc_malloc_debug.abilist | 26 + > .../riscv/rv64/libc_malloc_debug.abilist | 26 + > sysdeps/unix/sysv/linux/s390/localplt.data | 1 - > .../s390/s390-32/libc_malloc_debug.abilist | 26 + > .../s390/s390-64/libc_malloc_debug.abilist | 26 + > .../linux/sh/be/libc_malloc_debug.abilist | 26 + > .../linux/sh/le/libc_malloc_debug.abilist | 26 + > sysdeps/unix/sysv/linux/sh/localplt.data | 1 - > sysdeps/unix/sysv/linux/sh/shlib-versions | 1 + > .../sparc/sparc32/libc_malloc_debug.abilist | 26 + > .../sysv/linux/sparc/sparc32/localplt.data | 1 - > .../sparc/sparc64/libc_malloc_debug.abilist | 26 + > .../sysv/linux/sparc/sparc64/localplt.data | 1 - > .../sysv/linux/sparc/sparc64/shlib-versions | 1 + > .../linux/x86_64/64/libc_malloc_debug.abilist | 26 + > .../x86_64/x32/libc_malloc_debug.abilist | 26 + > sysdeps/x86_64/localplt.data | 1 - > 104 files changed, 2557 insertions(+), 1266 deletions(-) > delete mode 100644 elf/tst-leaks1-static.c > create mode 100644 malloc/malloc-debug.c > delete mode 100644 malloc/malloc-hooks.h > create mode 100644 malloc/mcheck-impl.c > create mode 100644 malloc/mtrace-impl.c > create mode 100644 malloc/tst-compathooks-off.c > create mode 100644 malloc/tst-compathooks-on.c > delete mode 100644 malloc/tst-malloc-usable-static-tunables.c > delete mode 100644 malloc/tst-malloc-usable-static.c > create mode 100644 sysdeps/generic/libc_malloc_debug.abilist > create mode 100644 sysdeps/mach/hurd/i386/libc_malloc_debug.abilist > create mode 100644 sysdeps/unix/sysv/linux/aarch64/libc_malloc_debug.abilist > create mode 100644 sysdeps/unix/sysv/linux/alpha/libc_malloc_debug.abilist > create mode 100644 sysdeps/unix/sysv/linux/arc/libc_malloc_debug.abilist > create mode 100644 sysdeps/unix/sysv/linux/arm/be/libc_malloc_debug.abilist > create mode 100644 sysdeps/unix/sysv/linux/arm/le/libc_malloc_debug.abilist > create mode 100644 sysdeps/unix/sysv/linux/csky/libc_malloc_debug.abilist > create mode 100644 sysdeps/unix/sysv/linux/hppa/libc_malloc_debug.abilist > create mode 100644 sysdeps/unix/sysv/linux/i386/libc_malloc_debug.abilist > create mode 100644 sysdeps/unix/sysv/linux/ia64/libc_malloc_debug.abilist > create mode 100644 sysdeps/unix/sysv/linux/m68k/coldfire/libc_malloc_debug.abilist > create mode 100644 sysdeps/unix/sysv/linux/m68k/m680x0/libc_malloc_debug.abilist > create mode 100644 sysdeps/unix/sysv/linux/microblaze/be/libc_malloc_debug.abilist > create mode 100644 sysdeps/unix/sysv/linux/microblaze/le/libc_malloc_debug.abilist > create mode 100644 sysdeps/unix/sysv/linux/mips/mips32/fpu/libc_malloc_debug.abilist > create mode 100644 sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc_malloc_debug.abilist > create mode 100644 sysdeps/unix/sysv/linux/mips/mips64/n32/libc_malloc_debug.abilist > create mode 100644 sysdeps/unix/sysv/linux/mips/mips64/n64/libc_malloc_debug.abilist > create mode 100644 sysdeps/unix/sysv/linux/nios2/libc_malloc_debug.abilist > create mode 100644 sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc_malloc_debug.abilist > create mode 100644 sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc_malloc_debug.abilist > create mode 100644 sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc_malloc_debug.abilist > create mode 100644 sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc_malloc_debug.abilist > create mode 100644 sysdeps/unix/sysv/linux/riscv/rv32/libc_malloc_debug.abilist > create mode 100644 sysdeps/unix/sysv/linux/riscv/rv64/libc_malloc_debug.abilist > create mode 100644 sysdeps/unix/sysv/linux/s390/s390-32/libc_malloc_debug.abilist > create mode 100644 sysdeps/unix/sysv/linux/s390/s390-64/libc_malloc_debug.abilist > create mode 100644 sysdeps/unix/sysv/linux/sh/be/libc_malloc_debug.abilist > create mode 100644 sysdeps/unix/sysv/linux/sh/le/libc_malloc_debug.abilist > create mode 100644 sysdeps/unix/sysv/linux/sparc/sparc32/libc_malloc_debug.abilist > create mode 100644 sysdeps/unix/sysv/linux/sparc/sparc64/libc_malloc_debug.abilist > create mode 100644 sysdeps/unix/sysv/linux/x86_64/64/libc_malloc_debug.abilist > create mode 100644 sysdeps/unix/sysv/linux/x86_64/x32/libc_malloc_debug.abilist > -- Cheers, Carlos.