summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorglider@chromium.org <glider@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-09-29 13:41:01 +0000
committerglider@chromium.org <glider@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-09-29 13:41:01 +0000
commite1c19e3b4ceee5dc7256c3ee00a9e33c87115e64 (patch)
treeecca6ef12d8535001462b8fef8237b5f7b863cd3 /tools
parentd518cd9680f698fb14cb0d355c8f79f54e7c05e3 (diff)
downloadchromium_src-e1c19e3b4ceee5dc7256c3ee00a9e33c87115e64.zip
chromium_src-e1c19e3b4ceee5dc7256c3ee00a9e33c87115e64.tar.gz
chromium_src-e1c19e3b4ceee5dc7256c3ee00a9e33c87115e64.tar.bz2
Convert all the report stack lines to strings (better implementation of r60931)
Review URL: http://codereview.chromium.org/3527002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@60937 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'tools')
-rw-r--r--tools/valgrind/tsan_analyze.py22
1 files changed, 17 insertions, 5 deletions
diff --git a/tools/valgrind/tsan_analyze.py b/tools/valgrind/tsan_analyze.py
index 8be75ef..9d48fb9 100644
--- a/tools/valgrind/tsan_analyze.py
+++ b/tools/valgrind/tsan_analyze.py
@@ -97,6 +97,15 @@ class TsanAnalyzer(object):
return result
def ParseReportFile(self, filename):
+ '''Parses a report file and returns a list of ThreadSanitizer reports.
+
+
+ Args:
+ filename: report filename.
+ Returns:
+ list of (list of (str iff self._use_gdb, _StackTraceLine otherwise)).
+ '''
+ ret = []
self.cur_fd_ = open(filename, 'r')
while True:
@@ -114,11 +123,11 @@ class TsanAnalyzer(object):
self.ReadLine()
if re.search(TsanAnalyzer.TSAN_RACE_DESCRIPTION, self.line_):
tmp.extend(self.ReadSection())
- self.reports.append(tmp)
+ ret.append(tmp)
if (re.search(TsanAnalyzer.TSAN_WARNING_DESCRIPTION, self.line_) and
not common.IsWindows()): # workaround for http://crbug.com/53198
tmp.extend(self.ReadSection())
- self.reports.append(tmp)
+ ret.append(tmp)
match = re.search(" used_suppression:\s+([0-9]+)\s(.*)", self.line_)
if match:
@@ -129,6 +138,7 @@ class TsanAnalyzer(object):
else:
self.used_suppressions[supp_name] = count
self.cur_fd_.close()
+ return ret
def GetReports(self, files):
'''Extracts reports from a set of files.
@@ -143,13 +153,15 @@ class TsanAnalyzer(object):
TheAddressTable = gdb_helper.AddressTable()
else:
TheAddressTable = None
- self.reports = []
+ reports = []
self.used_suppressions = {}
for file in files:
- self.ParseReportFile(file)
+ reports.extend(self.ParseReportFile(file))
if self._use_gdb:
TheAddressTable.ResolveAll()
- return [''.join(map(str, report_lines)) for report_lines in self.reports]
+ # Make each line of each report a string.
+ reports = map(lambda(x): map(str, x), a)
+ return [''.join(report_lines) for report_lines in reports]
def Report(self, files, check_sanity=False):
'''Reads in a set of files and prints ThreadSanitizer report.