Index: tools/findit/findit_for_crash.py |
diff --git a/tools/findit/findit_for_crash.py b/tools/findit/findit_for_crash.py |
index 50f12d85618577f291298b69faba15029d205123..886e757ef7474dbcdbf28aa4689d3be7ef0937f9 100644 |
--- a/tools/findit/findit_for_crash.py |
+++ b/tools/findit/findit_for_crash.py |
@@ -3,7 +3,7 @@ |
# found in the LICENSE file. |
import os |
-from threading import Lock, Thread |
+from threading import Lock |
import blame |
from common import utils |
@@ -139,8 +139,8 @@ def FindMatch(revisions_info_map, file_to_revision_info, file_to_crash_info, |
Matches, a set of match objects. |
""" |
matches = match_set.MatchSet(codereview_api_url) |
- threads = [] |
+ tasks = [] |
# Iterate through the crashed files in the stacktrace. |
for crashed_file_path in file_to_crash_info: |
# Ignore header file. |
@@ -172,17 +172,16 @@ def FindMatch(revisions_info_map, file_to_revision_info, file_to_crash_info, |
revision = revisions_info_map[cl] |
- match_thread = Thread( |
- target=GenerateMatchEntry, |
- args=[matches, revision, cl, changed_file_path, functions, |
+ tasks.append({ |
+ 'function': GenerateMatchEntry, |
+ 'args': [matches, revision, cl, changed_file_path, functions, |
component_path, component_name, crashed_line_numbers, |
stack_frame_nums, file_change_type, |
- repository_parser]) |
- threads.append(match_thread) |
- match_thread.start() |
+ repository_parser] |
+ }) |
- for match_thread in threads: |
- match_thread.join() |
+ # Run all the tasks. |
+ crash_utils.RunTasks(tasks) |
matches.RemoveRevertedCLs() |
@@ -241,8 +240,8 @@ def FindMatchForCallstack( |
components) |
callstack_priority = callstack.priority |
+ tasks = [] |
# Iterate through all components and create new thread for each component. |
- threads = [] |
for component_path in component_dict: |
# If the component to consider in this callstack is not in the parsed list |
# of components, ignore this one. |
@@ -251,15 +250,14 @@ def FindMatchForCallstack( |
changelog = component_to_changelog_map[component_path] |
file_to_crash_info = component_dict.GetFileDict(component_path) |
- t = Thread( |
- target=FindMatchForComponent, |
- args=[component_path, file_to_crash_info, changelog, |
- callstack_priority, results, results_lock]) |
- threads.append(t) |
- t.start() |
+ tasks.append({ |
+ 'function': FindMatchForComponent, |
+ 'args': [component_path, file_to_crash_info, changelog, |
+ callstack_priority, results, results_lock] |
+ }) |
- for t in threads: |
- t.join() |
+ # Run all the tasks. |
+ crash_utils.RunTasks(tasks) |
def FindMatchForStacktrace(stacktrace, components, |
@@ -320,18 +318,17 @@ def FindMatchForStacktrace(stacktrace, components, |
revisions, |
file_to_revision_map) |
+ tasks = [] |
# Create separate threads for each of the call stack in the stacktrace. |
- threads = [] |
for callstack in stacktrace.stack_list: |
- t = Thread( |
- target=FindMatchForCallstack, |
- args=[callstack, components, component_to_changelog_map, |
- results, results_lock]) |
- threads.append(t) |
- t.start() |
+ tasks.append({ |
+ 'function': FindMatchForCallstack, |
+ 'args': [callstack, components, component_to_changelog_map, |
+ results, results_lock] |
+ }) |
- for t in threads: |
- t.join() |
+ # Run all the tasks. |
+ crash_utils.RunTasks(tasks) |
return results |
@@ -477,8 +474,8 @@ def GenerateReasonForMatches(matches): |
pretty_file_names = crash_utils.PrettifyList(file_names) |
# Add the reason, break because we took care of the rest of the files. |
- file_string += '(%s)' % crash_utils.PrettifyFrameInfo( |
- stack_frame_indices, function_list) |
+ file_string += ('(and is part of stack %s)' % |
+ crash_utils.PrettifyFrameInfo(stack_frame_indices, function_list)) |
reason.append(file_string % pretty_file_names) |
break |
@@ -522,8 +519,8 @@ def CombineMatches(matches): |
if match.min_distance_info: |
file_name, min_crashed_line, min_changed_line = match.min_distance_info |
match.reason += \ |
- ('Minimum distance from crashed line to changed line: %d. ' |
- '(File: %s, Crashed on: %d, Changed: %d).\n' % |
+ ('\nMinimum distance from crash line to modified line: %d. ' |
+ '(file: %s, crashed on: %d, modified: %d).\n' % |
(match.min_distance, file_name, min_crashed_line, min_changed_line)) |
return combined_matches |
@@ -668,8 +665,8 @@ def FindItForCrash(stacktrace_list, |
if result: |
return_message = ( |
- 'No CL in the regression changes the crashed files. The result is ' |
- 'the blame information.') |
+ 'No CL in the regression range changes the crashed files. ' |
+ 'The result is the blame information.') |
# When findit could not find any CL that changes file in stacktrace or if |
# if cannot get any blame information, return a message saying that no |