From: Ben Pfaff Date: Fri, 11 Jul 2014 18:03:08 +0000 (-0700) Subject: tests: Disable glibc memory checking under glibc <= 2.11. X-Git-Tag: v2.3~26 X-Git-Url: http://git.cascardo.eti.br/?p=cascardo%2Fovs.git;a=commitdiff_plain;h=e80323de962311adc16cfa54d25d59b499e6f3c6 tests: Disable glibc memory checking under glibc <= 2.11. We noticed that the unit tests sometimes fail on XenServer inside glibc's memory checker, in the free_check() function. It turns out that the glibc memory checker in glibc 2.11 and earlier had an internal race that caused false positives in multithreaded programs. This commit avoids the problem by disabling the glibc memory checker in glibc 2.11 and earlier. VMware-BZ: #1267127 Signed-off-by: Ben Pfaff Acked-by: Gurucharan Shetty --- diff --git a/tests/atlocal.in b/tests/atlocal.in index 60f3dbf35..a3ddde4e9 100644 --- a/tests/atlocal.in +++ b/tests/atlocal.in @@ -52,10 +52,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