[llvm-commits] [llvm] r98813 - in /llvm/trunk/utils/lit/lit: TestFormats.py TestRunner.py

Jeffrey Yasskin jyasskin at google.com
Thu Mar 18 00:00:13 PDT 2010


Author: jyasskin
Date: Thu Mar 18 02:00:12 2010
New Revision: 98813

URL: http://llvm.org/viewvc/llvm-project?rev=98813&view=rev
Log:
Avoid a problem in libc_freeres() seen on a linux-i686 buildbot when running
under valgrind:

==19577== Invalid free() / delete / delete[]
==19577==    at 0x4C9C866: free (vg_replace_malloc.c:325)
==19577==    by 0x5121104: ??? (in /lib/libc-2.10.2.so)
==19577==    by 0x4C97412: _vgnU_freeres (vg_preloaded.c:62)
==19577==    by 0x5041486: __run_exit_handlers (exit.c:93)
==19577==    by 0x50414FE: exit (exit.c:100)
==19577==    by 0x5028B5C: (below main) (libc-start.c:254)
==19577==  Address 0xffffffff is not stack'd, malloc'd or (recently) free'd
==19577== 

Apparently this happens under certain versions of glibc, so valgrind provides
the --run-libc-freeres=no option to avoid calling freeres().  This may increase
the number of "still reachable" blocks valgrind reports, but we don't care
about those, while this error breaks the buildbots.

There are upstream bugs about this at
http://sourceware.org/bugzilla/show_bug.cgi?id=10610 and
http://bugs.kde.org/show_bug.cgi?id=167483, but they don't look likely to be
fixed.

Modified:
    llvm/trunk/utils/lit/lit/TestFormats.py
    llvm/trunk/utils/lit/lit/TestRunner.py

Modified: llvm/trunk/utils/lit/lit/TestFormats.py
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/lit/lit/TestFormats.py?rev=98813&r1=98812&r2=98813&view=diff
==============================================================================
--- llvm/trunk/utils/lit/lit/TestFormats.py (original)
+++ llvm/trunk/utils/lit/lit/TestFormats.py Thu Mar 18 02:00:12 2010
@@ -73,7 +73,7 @@
 
         cmd = [testPath, '--gtest_filter=' + testName]
         if litConfig.useValgrind:
-            valgrindArgs = ['valgrind', '-q',
+            valgrindArgs = ['valgrind', '-q', '--run-libc-freeres=no',
                             '--tool=memcheck', '--trace-children=yes',
                             '--error-exitcode=123']
             valgrindArgs.extend(litConfig.valgrindArgs)

Modified: llvm/trunk/utils/lit/lit/TestRunner.py
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/lit/lit/TestRunner.py?rev=98813&r1=98812&r2=98813&view=diff
==============================================================================
--- llvm/trunk/utils/lit/lit/TestRunner.py (original)
+++ llvm/trunk/utils/lit/lit/TestRunner.py Thu Mar 18 02:00:12 2010
@@ -253,7 +253,7 @@
             return (Test.FAIL, "Tcl 'exec' parse error on: %r" % ln)
 
     if litConfig.useValgrind:
-        valgrindArgs = ['valgrind', '-q',
+        valgrindArgs = ['valgrind', '-q', '--run-libc-freeres=no',
                         '--tool=memcheck', '--trace-children=yes',
                         '--error-exitcode=123']
         valgrindArgs.extend(litConfig.valgrindArgs)
@@ -339,7 +339,7 @@
         if litConfig.useValgrind:
             # FIXME: Running valgrind on sh is overkill. We probably could just
             # run on clang with no real loss.
-            valgrindArgs = ['valgrind', '-q',
+            valgrindArgs = ['valgrind', '-q', '--run-libc-freeres=no',
                             '--tool=memcheck', '--trace-children=yes',
                             '--error-exitcode=123']
             valgrindArgs.extend(litConfig.valgrindArgs)





More information about the llvm-commits mailing list