mirror of
https://github.com/yuzu-emu/breakpad.git
synced 2024-11-28 04:34:22 +01:00
Processor can attempt processing all threads even when interrupted (#177).
r=ted.mielczarek http://groups.google.com/group/google-breakpad-dev/browse_thread/thread/8fda7c96fa7b5d57 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@178 4c0a9323-5329-0410-9bdc-e9ce6186880e
This commit is contained in:
parent
32b802dba3
commit
6ed453a770
@ -112,6 +112,7 @@ MinidumpProcessor::ProcessResult MinidumpProcessor::Process(
|
|||||||
(has_dump_thread ? "" : "no ") << "dump thread, and " <<
|
(has_dump_thread ? "" : "no ") << "dump thread, and " <<
|
||||||
(has_requesting_thread ? "" : "no ") << "requesting thread";
|
(has_requesting_thread ? "" : "no ") << "requesting thread";
|
||||||
|
|
||||||
|
bool interrupted = false;
|
||||||
bool found_requesting_thread = false;
|
bool found_requesting_thread = false;
|
||||||
unsigned int thread_count = threads->thread_count();
|
unsigned int thread_count = threads->thread_count();
|
||||||
for (unsigned int thread_index = 0;
|
for (unsigned int thread_index = 0;
|
||||||
@ -203,13 +204,18 @@ MinidumpProcessor::ProcessResult MinidumpProcessor::Process(
|
|||||||
|
|
||||||
scoped_ptr<CallStack> stack(new CallStack());
|
scoped_ptr<CallStack> stack(new CallStack());
|
||||||
if (!stackwalker->Walk(stack.get())) {
|
if (!stackwalker->Walk(stack.get())) {
|
||||||
BPLOG(INFO) << "Processing interrupted by stackwalker (missing " <<
|
BPLOG(INFO) << "Stackwalker interrupt (missing symbols?) at " <<
|
||||||
"symbols?) at " << thread_string;
|
thread_string;
|
||||||
return PROCESS_INTERRUPTED;
|
interrupted = true;
|
||||||
}
|
}
|
||||||
process_state->threads_.push_back(stack.release());
|
process_state->threads_.push_back(stack.release());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (interrupted) {
|
||||||
|
BPLOG(INFO) << "Processing interrupted for " << minidump_file;
|
||||||
|
return PROCESS_INTERRUPTED;
|
||||||
|
}
|
||||||
|
|
||||||
// If a requesting thread was indicated, it must be present.
|
// If a requesting thread was indicated, it must be present.
|
||||||
if (has_requesting_thread && !found_requesting_thread) {
|
if (has_requesting_thread && !found_requesting_thread) {
|
||||||
// Don't mark as an error, but invalidate the requesting thread
|
// Don't mark as an error, but invalidate the requesting thread
|
||||||
|
Loading…
Reference in New Issue
Block a user