MinidumpProcessor uses the wrong context for non-crash threads (#62). r=bryner
http://groups.google.com/group/airbag-dev/browse_thread/thread/74743a397c52b7e2 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@52 4c0a9323-5329-0410-9bdc-e9ce6186880e
This commit is contained in:
parent
29401d2457
commit
f944ba3fbb
1 changed files with 10 additions and 1 deletions
|
@ -79,6 +79,8 @@ ProcessState* MinidumpProcessor::Process(const string &minidump_file) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MinidumpContext *context = thread->GetContext();
|
||||||
|
|
||||||
if (process_state->crashed_ &&
|
if (process_state->crashed_ &&
|
||||||
thread->GetThreadID() == exception_thread_id) {
|
thread->GetThreadID() == exception_thread_id) {
|
||||||
if (found_crash_thread) {
|
if (found_crash_thread) {
|
||||||
|
@ -86,6 +88,13 @@ ProcessState* MinidumpProcessor::Process(const string &minidump_file) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Use the exception record's context for the crashed thread, instead
|
||||||
|
// of the thread's own context. For the crashed thread, the thread's
|
||||||
|
// own context is the state inside the exception handler. Using it
|
||||||
|
// would not result in the expected stack trace from the time of the
|
||||||
|
// crash.
|
||||||
|
context = exception->GetContext();
|
||||||
|
|
||||||
process_state->crash_thread_ = thread_index;
|
process_state->crash_thread_ = thread_index;
|
||||||
found_crash_thread = true;
|
found_crash_thread = true;
|
||||||
}
|
}
|
||||||
|
@ -96,7 +105,7 @@ ProcessState* MinidumpProcessor::Process(const string &minidump_file) {
|
||||||
}
|
}
|
||||||
|
|
||||||
scoped_ptr<Stackwalker> stackwalker(
|
scoped_ptr<Stackwalker> stackwalker(
|
||||||
Stackwalker::StackwalkerForCPU(exception->GetContext(),
|
Stackwalker::StackwalkerForCPU(context,
|
||||||
thread_memory,
|
thread_memory,
|
||||||
dump.GetModuleList(),
|
dump.GetModuleList(),
|
||||||
supplier_));
|
supplier_));
|
||||||
|
|
Loading…
Reference in a new issue