From 6ed453a770a18ec0c5c7caaab60f5fff531b6608 Mon Sep 17 00:00:00 2001 From: mmentovai Date: Fri, 25 May 2007 19:10:19 +0000 Subject: [PATCH] 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 --- src/processor/minidump_processor.cc | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/processor/minidump_processor.cc b/src/processor/minidump_processor.cc index a2a31427..6ab8c07d 100644 --- a/src/processor/minidump_processor.cc +++ b/src/processor/minidump_processor.cc @@ -112,6 +112,7 @@ MinidumpProcessor::ProcessResult MinidumpProcessor::Process( (has_dump_thread ? "" : "no ") << "dump thread, and " << (has_requesting_thread ? "" : "no ") << "requesting thread"; + bool interrupted = false; bool found_requesting_thread = false; unsigned int thread_count = threads->thread_count(); for (unsigned int thread_index = 0; @@ -203,13 +204,18 @@ MinidumpProcessor::ProcessResult MinidumpProcessor::Process( scoped_ptr stack(new CallStack()); if (!stackwalker->Walk(stack.get())) { - BPLOG(INFO) << "Processing interrupted by stackwalker (missing " << - "symbols?) at " << thread_string; - return PROCESS_INTERRUPTED; + BPLOG(INFO) << "Stackwalker interrupt (missing symbols?) at " << + thread_string; + interrupted = true; } 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 (has_requesting_thread && !found_requesting_thread) { // Don't mark as an error, but invalidate the requesting thread