summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorglider@chromium.org <glider@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-06-22 09:12:36 +0000
committerglider@chromium.org <glider@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-06-22 09:12:36 +0000
commit41a7fb790a9338e637aa3b3e94861924c60c604f (patch)
tree64e902364b930339f212848238cb2620dff43670 /tools
parent4d17c0b23048d8c0ae7dfe81b2b56f1ac7c9fcf9 (diff)
downloadchromium_src-41a7fb790a9338e637aa3b3e94861924c60c604f.zip
chromium_src-41a7fb790a9338e637aa3b3e94861924c60c604f.tar.gz
chromium_src-41a7fb790a9338e637aa3b3e94861924c60c604f.tar.bz2
Make waterfall.sh recognize TSan suppressions.
TBR=timurrrr Review URL: http://codereview.chromium.org/7232006 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@90010 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'tools')
-rw-r--r--tools/valgrind/suppressions.py35
-rw-r--r--tools/valgrind/test_suppressions.py12
2 files changed, 41 insertions, 6 deletions
diff --git a/tools/valgrind/suppressions.py b/tools/valgrind/suppressions.py
index b707164..4d4ef41 100644
--- a/tools/valgrind/suppressions.py
+++ b/tools/valgrind/suppressions.py
@@ -152,14 +152,18 @@ def ReadSuppressions(lines, supp_descriptor):
continue
elif not cur_type:
if (not line.startswith("Memcheck:")) and \
+ (not line.startswith("ThreadSanitizer:")) and \
(line != "Heapcheck:Leak"):
raise SuppressionError(supp_descriptor, nline,
- '"Memcheck:TYPE" or "Heapcheck:Leak is expected, got "%s"' % line)
- if not line.split(':')[1] in ["Addr1", "Addr2", "Addr4", "Addr8",
+ '"Memcheck:TYPE" , "ThreadSanitizer:TYPE" or "Heapcheck:Leak '
+ 'is expected, got "%s"' % line)
+ supp_type = line.split(':')[1]
+ if not supp_type in ["Addr1", "Addr2", "Addr4", "Addr8",
"Cond", "Free", "Jump", "Leak", "Overlap", "Param",
- "Value1", "Value2", "Value4", "Value8"]:
+ "Value1", "Value2", "Value4", "Value8",
+ "Race", "UnlockNonLocked", "InvalidLock"]:
raise SuppressionError(supp_descriptor, nline,
- 'Unknown suppression type "%s"' % line[9:])
+ 'Unknown suppression type "%s"' % supp_type)
cur_type = line
continue
elif re.match("^fun:.*|^obj:.*|^\.\.\.$", line):
@@ -211,6 +215,17 @@ def SelfTest():
fun:expression
}""".split("\n")
+ test_stack3 = """{
+ test
+ ThreadSanitizer:Race
+ fun:absolutly
+ fun:brilliant
+ obj:condition
+ fun:detection
+ fun:expression
+ }""".split("\n")
+
+
positive_memcheck_suppressions = [
"{\nzzz\nMemcheck:Leak\nfun:absolutly\n}",
"{\nzzz\nMemcheck:Leak\nfun:ab*ly\n}",
@@ -229,6 +244,11 @@ def SelfTest():
"{\nzzz\nHeapcheck:Leak\nfun:absolutly\n}",
]
+ positive_tsan_suppressions = [
+ "{\nzzz\nThreadSanitizer:Race\n...\nobj:condition\n}",
+ "{\nzzz\nThreadSanitizer:Race\nfun:absolutly\n}",
+ ]
+
negative_memcheck_suppressions = [
"{\nzzz\nMemcheck:Leak\nfun:abnormal\n}",
"{\nzzz\nMemcheck:Leak\nfun:ab*liant\n}",
@@ -242,10 +262,17 @@ def SelfTest():
"{\nzzz\nHeapcheck:Leak\nfun:brilliant\n}",
]
+ negative_tsan_suppressions = [
+ "{\nzzz\nThreadSanitizer:Leak\nfun:absolutly\n}",
+ "{\nzzz\nThreadSanitizer:Race\nfun:brilliant\n}",
+ ]
+
TestStack(test_stack1, positive_memcheck_suppressions,
negative_memcheck_suppressions)
TestStack(test_stack2, positive_heapcheck_suppressions,
negative_heapcheck_suppressions)
+ TestStack(test_stack3, positive_tsan_suppressions,
+ negative_tsan_suppressions)
if __name__ == '__main__':
SelfTest()
diff --git a/tools/valgrind/test_suppressions.py b/tools/valgrind/test_suppressions.py
index 0efc4bc..e1be2ea 100644
--- a/tools/valgrind/test_suppressions.py
+++ b/tools/valgrind/test_suppressions.py
@@ -50,11 +50,19 @@ suppressions_root = path_utils.ScriptDir()
supp_filename = os.path.join(suppressions_root,
"memcheck", "suppressions.txt")
-common_suppressions = suppressions.ReadSuppressionsFromFile(supp_filename)
+vg_common = suppressions.ReadSuppressionsFromFile(supp_filename)
+supp_filename = os.path.join(suppressions_root,
+ "tsan", "suppressions.txt")
+tsan_common = suppressions.ReadSuppressionsFromFile(supp_filename)
+common_suppressions = vg_common + tsan_common
supp_filename = os.path.join(suppressions_root,
"memcheck", "suppressions_mac.txt")
-mac_suppressions = suppressions.ReadSuppressionsFromFile(supp_filename)
+vg_mac = suppressions.ReadSuppressionsFromFile(supp_filename)
+supp_filename = os.path.join(suppressions_root,
+ "tsan", "suppressions_mac.txt")
+tsan_mac = suppressions.ReadSuppressionsFromFile(supp_filename)
+mac_suppressions = vg_mac + tsan_mac
supp_filename = os.path.join(suppressions_root,
"..", "heapcheck", "suppressions.txt")