summaryrefslogtreecommitdiff
path: root/utils/lit/lit
diff options
context:
space:
mode:
authorJeffrey Yasskin <jyasskin@google.com>2010-03-18 07:00:12 +0000
committerJeffrey Yasskin <jyasskin@google.com>2010-03-18 07:00:12 +0000
commitfd4943087e695be494732c745bbe4794ba022567 (patch)
tree27ca328069b5ee97f0bfcd090dfb77c2d051234f /utils/lit/lit
parentbdc652bab899d86f2181ed30caf689e43237ffb3 (diff)
downloadllvm-fd4943087e695be494732c745bbe4794ba022567.tar.gz
llvm-fd4943087e695be494732c745bbe4794ba022567.tar.bz2
llvm-fd4943087e695be494732c745bbe4794ba022567.tar.xz
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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98813 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'utils/lit/lit')
-rw-r--r--utils/lit/lit/TestFormats.py2
-rw-r--r--utils/lit/lit/TestRunner.py4
2 files changed, 3 insertions, 3 deletions
diff --git a/utils/lit/lit/TestFormats.py b/utils/lit/lit/TestFormats.py
index 6ab3f9c462..33fd1c1d12 100644
--- a/utils/lit/lit/TestFormats.py
+++ b/utils/lit/lit/TestFormats.py
@@ -73,7 +73,7 @@ class GoogleTest(object):
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)
diff --git a/utils/lit/lit/TestRunner.py b/utils/lit/lit/TestRunner.py
index d5bd01f89c..2778469daa 100644
--- a/utils/lit/lit/TestRunner.py
+++ b/utils/lit/lit/TestRunner.py
@@ -253,7 +253,7 @@ def executeTclScriptInternal(test, litConfig, tmpBase, commands, cwd):
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 @@ def executeScript(test, litConfig, tmpBase, commands, cwd):
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)