diff options
author | nealsid <nealsid@4c0a9323-5329-0410-9bdc-e9ce6186880e> | 2010-06-04 16:59:23 +0000 |
---|---|---|
committer | nealsid <nealsid@4c0a9323-5329-0410-9bdc-e9ce6186880e> | 2010-06-04 16:59:23 +0000 |
commit | 4f182c746bccc64a141cd4bbda4d3d901ef013ce (patch) | |
tree | 9079991cb4c17d6afb5d4f5755fe24d2da09eff1 /src/processor | |
parent | Fix compilation on gcc 4.5 by adding a missing #include. Patch by Benoit Jaco... (diff) | |
download | breakpad-4f182c746bccc64a141cd4bbda4d3d901ef013ce.tar.xz |
Add access violation detail for windows (read/write/dep). Add stack buffer overrun and heap corruption exceptions for windows. Additional detail requested to improve Chrome crash analysis
A=cdn
R=nealsid
http://codereview.chromium.org/2429003/show
git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@606 4c0a9323-5329-0410-9bdc-e9ce6186880e
Diffstat (limited to 'src/processor')
-rw-r--r-- | src/processor/minidump_processor.cc | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/src/processor/minidump_processor.cc b/src/processor/minidump_processor.cc index e2b5bd3d..e1583f49 100644 --- a/src/processor/minidump_processor.cc +++ b/src/processor/minidump_processor.cc @@ -703,7 +703,24 @@ string MinidumpProcessor::GetCrashReason(Minidump *dump, u_int64_t *address) { // data. // This information is useful in addition to the code address, which // will be present in the crash thread's instruction field anyway. - reason = "EXCEPTION_ACCESS_VIOLATION"; + if (raw_exception->exception_record.number_parameters >= 1) { + switch (raw_exception->exception_record.exception_information[0]) { + case 0: + reason = "EXCEPTION_ACCESS_VIOLATION_READ"; + break; + case 1: + reason = "EXCEPTION_ACCESS_VIOLATION_WRITE"; + break; + case 8: + reason = "EXCEPTION_ACCESS_VIOLATION_EXEC"; + break; + default: + reason = "EXCEPTION_ACCESS_VIOLATION"; + break; + } + } else { + reason = "EXCEPTION_ACCESS_VIOLATION"; + } if (address && raw_exception->exception_record.number_parameters >= 2) { *address = @@ -764,6 +781,12 @@ string MinidumpProcessor::GetCrashReason(Minidump *dump, u_int64_t *address) { case MD_EXCEPTION_CODE_WIN_POSSIBLE_DEADLOCK: reason = "EXCEPTION_POSSIBLE_DEADLOCK"; break; + case MD_EXCEPTION_CODE_WIN_STACK_BUFFER_OVERRUN: + reason = "EXCEPTION_STACK_BUFFER_OVERRUN"; + break; + case MD_EXCEPTION_CODE_WIN_HEAP_CORRUPTION: + reason = "EXCEPTION_HEAP_CORRUPTION"; + break; case MD_EXCEPTION_CODE_WIN_UNHANDLED_CPP_EXCEPTION: reason = "Unhandled C++ Exception"; break; |