[ovs-dev] [PATCH] tests: Disable glibc memory checking under glibc <= 2.11.

Gurucharan Shetty shettyg at nicira.com
Thu Jul 10 21:32:56 UTC 2014


On Wed, Jul 9, 2014 at 3:45 PM, Ben Pfaff <blp at nicira.com> wrote:
> 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 <blp at nicira.com>
> ---
>  tests/atlocal.in |   22 ++++++++++++++++++----
>  1 file changed, 18 insertions(+), 4 deletions(-)
>
> diff --git a/tests/atlocal.in b/tests/atlocal.in
> index 2f816fc..825d289 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'`
Does the above 2 lines work properly?
I get a blank line when I run the following on Ubuntu12.04:
ldd vswitchd/ovs-vswitchd | sed -n 's/^ libc\.[^ ]* => \([^ ]*\) .*/\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
> --
> 1.7.10.4
>
> _______________________________________________
> dev mailing list
> dev at openvswitch.org
> http://openvswitch.org/mailman/listinfo/dev



More information about the dev mailing list