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

Gurucharan Shetty shettyg at nicira.com
Thu Jul 10 22:39:53 UTC 2014


On Thu, Jul 10, 2014 at 2:37 PM, Ben Pfaff <blp at nicira.com> wrote:
> 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>
Running rpmbuild in a loop usually used to cause me a hang within 10
minutes. I haven't had any problems for an hour now. So this atleast
looks like an improvement.

Acked-by: Gurucharan Shetty <gshetty 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