summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authortimurrrr@chromium.org <timurrrr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-03-19 17:49:02 +0000
committertimurrrr@chromium.org <timurrrr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-03-19 17:49:02 +0000
commit791513396ae80a313cd5af44ae7bfcdb52fff6bb (patch)
tree9ef2bf8b41123b1fbdc270c86b75fff5584788fb
parent240c7227d04ef79e491c21d7d9a88383ff0ea611 (diff)
downloadchromium_src-791513396ae80a313cd5af44ae7bfcdb52fff6bb.zip
chromium_src-791513396ae80a313cd5af44ae7bfcdb52fff6bb.tar.gz
chromium_src-791513396ae80a313cd5af44ae7bfcdb52fff6bb.tar.bz2
Run new self-contained binaries for TSan
Review URL: http://codereview.chromium.org/1142002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@42122 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--tools/valgrind/tsan_analyze.py9
-rwxr-xr-xtools/valgrind/valgrind.sh5
-rwxr-xr-xtools/valgrind/valgrind_test.py17
3 files changed, 17 insertions, 14 deletions
diff --git a/tools/valgrind/tsan_analyze.py b/tools/valgrind/tsan_analyze.py
index 9ddcdb4..eacf550 100644
--- a/tools/valgrind/tsan_analyze.py
+++ b/tools/valgrind/tsan_analyze.py
@@ -105,10 +105,6 @@ class TsanAnalyze:
if (self.line_ == ''):
break
- if re.search("ERROR SUMMARY", self.line_):
- # TSAN has finished working. The remaining reports are duplicates.
- break
-
tmp = []
while re.search(TsanAnalyze.THREAD_CREATION_STR, self.line_):
tmp.extend(self.ReadSection())
@@ -117,11 +113,6 @@ class TsanAnalyze:
tmp.extend(self.ReadSection())
self.races.append(tmp)
- while True:
- # Read the list of used suppressions.
- self.ReadLine()
- if (self.line_ == ''):
- break
match = re.search(" used_suppression:\s+([0-9]+)\s(.*)", self.line_)
if match:
count, supp_name = match.groups()
diff --git a/tools/valgrind/valgrind.sh b/tools/valgrind/valgrind.sh
index a064035..09133b9 100755
--- a/tools/valgrind/valgrind.sh
+++ b/tools/valgrind/valgrind.sh
@@ -16,6 +16,7 @@
export THISDIR=`dirname $0`
setup_memcheck() {
+ RUN_COMMAND="valgrind"
# Prefer a 32-bit gdb if it's available.
GDB="/usr/bin/gdb32";
if [ ! -x $GDB ]; then
@@ -30,6 +31,7 @@ setup_memcheck() {
}
setup_tsan() {
+ RUN_COMMAND="valgrind-tsan.sh"
IGNORE_FILE="$THISDIR/tsan/ignores.txt"
DEFAULT_TOOL_FLAGS=("--announce-threads" "--pure-happens-before=yes" \
"--ignore=$IGNORE_FILE")
@@ -102,8 +104,7 @@ G_SLICE=always-malloc \
NSS_DISABLE_ARENA_FREE_LIST=1 \
G_DEBUG=fatal_warnings \
GTEST_DEATH_TEST_USE_FORK=1 \
-valgrind \
- --tool=$TOOL_NAME \
+$RUN_COMMAND \
--trace-children=yes \
--suppressions="$SUPPRESSIONS" \
"${DEFAULT_TOOL_FLAGS[@]}" \
diff --git a/tools/valgrind/valgrind_test.py b/tools/valgrind/valgrind_test.py
index 3666760..1c15727 100755
--- a/tools/valgrind/valgrind_test.py
+++ b/tools/valgrind/valgrind_test.py
@@ -48,6 +48,11 @@ class ValgrindTool(object):
# Override if tool prefers nonxml output
return True
+ def SelfContained(self):
+ # Returns true iff the tool is distibuted as a self-contained
+ # .sh script (e.g. ThreadSanitizer)
+ return False
+
def ToolName(self):
raise RuntimeError, "This method should be implemented " \
"in the tool-specific subclass"
@@ -249,9 +254,12 @@ class ValgrindTool(object):
tool_name = self.ToolName()
# Construct the valgrind command.
- proc = ["valgrind",
- "--tool=%s" % tool_name,
- "--num-callers=%i" % self._num_callers]
+ if self.SelfContained():
+ proc = ["valgrind-%s.sh" % tool_name]
+ else:
+ proc = ["valgrind", "--tool=%s" % tool_name]
+
+ proc += ["--num-callers=%i" % self._num_callers]
if self._options.trace_children:
proc += ["--trace-children=yes"]
@@ -442,6 +450,9 @@ class ThreadSanitizer(ValgrindTool):
def UseXML(self):
return False
+ def SelfContained(self):
+ return True
+
def ExtendOptionParser(self, parser):
ValgrindTool.ExtendOptionParser(self, parser)
parser.add_option("", "--suppressions", default=[],