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

Ben Pfaff blp at nicira.com
Thu Jul 10 21:37:38 UTC 2014


On Thu, Jul 10, 2014 at 02:32:56PM -0700, Gurucharan Shetty wrote:
> 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'

The character after ^ is a tab, not a space, does that make it work
for you?

If not, what does the output of ldd look like on Ubuntu?



More information about the dev mailing list