]> git.ipfire.org Git - thirdparty/git.git/commitdiff
test-lib.sh: Use GLIBC_TUNABLES instead of MALLOC_CHECK_ on glibc >= 2.34
authorElia Pinto <gitter.spiros@gmail.com>
Fri, 4 Mar 2022 13:37:02 +0000 (13:37 +0000)
committerJunio C Hamano <gitster@pobox.com>
Fri, 4 Mar 2022 19:58:30 +0000 (11:58 -0800)
In glibc >= 2.34 MALLOC_CHECK_ and MALLOC_PERTURB_ environment
variables have been replaced by GLIBC_TUNABLES.  Also the new
glibc requires that you preload a library called libc_malloc_debug.so
to get these features.

Using the ordinary glibc system variable detect if this is glibc >= 2.34 and
use GLIBC_TUNABLES and the new library.

This patch was inspired by a Richard W.M. Jones ndbkit patch

Helped-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Elia Pinto <gitter.spiros@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/test-lib.sh

index 0f7a137c7d8d1ba15cc88f04c471aff4fcf7ecf6..8e59c58e7e7ac6aedcfb43574e16342d1692fcbc 100644 (file)
@@ -518,9 +518,25 @@ else
        setup_malloc_check () {
                MALLOC_CHECK_=3 MALLOC_PERTURB_=165
                export MALLOC_CHECK_ MALLOC_PERTURB_
+               if _GLIBC_VERSION=$(getconf GNU_LIBC_VERSION 2>/dev/null) &&
+                  _GLIBC_VERSION=${_GLIBC_VERSION#"glibc "} &&
+                  expr 2.34 \<= "$_GLIBC_VERSION" >/dev/null
+               then
+                       g=
+                       LD_PRELOAD="libc_malloc_debug.so.0"
+                       for t in \
+                               glibc.malloc.check=1 \
+                               glibc.malloc.perturb=165
+                       do
+                               g="${g#:}:$t"
+                       done
+                       GLIBC_TUNABLES=$g
+                       export LD_PRELOAD GLIBC_TUNABLES
+               fi
        }
        teardown_malloc_check () {
                unset MALLOC_CHECK_ MALLOC_PERTURB_
+               unset LD_PRELOAD GLIBC_TUNABLES
        }
 fi