diff options
-rw-r--r-- | tests/atlocal.in | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/tests/atlocal.in b/tests/atlocal.in index 3db626c34..5be19d966 100644 --- a/tests/atlocal.in +++ b/tests/atlocal.in @@ -37,10 +37,24 @@ fi # Enable malloc debugging features. case `uname` in Linux) - MALLOC_CHECK_=2 - MALLOC_PERTURB_=165 - export MALLOC_CHECK_ - export MALLOC_PERTURB_ + MALLOC_PERTURB_=165; export MALLOC_PERTURB_ + + # Before glibc 2.11, the feature enabled by MALLOC_CHECK_ was not + # thread-safe. See https://bugzilla.redhat.com/show_bug.cgi?id=585674 and + # in particular the patch attached there, which was applied to glibc CVS as + # "Restore locking in free_check." between 1.11 and 1.11.1. + vswitchd=$abs_top_builddir/vswitchd/ovs-vswitchd + glibc=`ldd $vswitchd | sed -n 's/^ libc\.[^ ]* => \([^ ]*\) .*/\1/p'` + glibc_version=`$glibc | sed -n '1s/.*version \([0-9]\{1,\}\.[0-9]\{1,\}\).*/\1/p'` + case $glibc_version in + 2.[0-9] | 2.1[01]) mcheck=disabled ;; + *) mcheck=enabled ;; + esac + if test $mcheck = enabled; then + MALLOC_CHECK_=2; export MALLOC_CHECK_ + else + echo >&2 "glibc $glibc_version detected, disabling memory checking" + fi ;; FreeBSD) case `uname -r` in |