diff options
author | glider@chromium.org <glider@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-09-29 13:41:01 +0000 |
---|---|---|
committer | glider@chromium.org <glider@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-09-29 13:41:01 +0000 |
commit | e1c19e3b4ceee5dc7256c3ee00a9e33c87115e64 (patch) | |
tree | ecca6ef12d8535001462b8fef8237b5f7b863cd3 /tools | |
parent | d518cd9680f698fb14cb0d355c8f79f54e7c05e3 (diff) | |
download | chromium_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.py | 22 |
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. |