aboutsummaryrefslogtreecommitdiff
path: root/src/processor/minidump_processor.cc
diff options
context:
space:
mode:
authornealsid <nealsid@4c0a9323-5329-0410-9bdc-e9ce6186880e>2010-06-04 16:59:23 +0000
committernealsid <nealsid@4c0a9323-5329-0410-9bdc-e9ce6186880e>2010-06-04 16:59:23 +0000
commit4f182c746bccc64a141cd4bbda4d3d901ef013ce (patch)
tree9079991cb4c17d6afb5d4f5755fe24d2da09eff1 /src/processor/minidump_processor.cc
parentc0fc538ae4a07a8f30babde89f8411bfc661b71d (diff)
downloadgoogle-breakpad-4f182c746bccc64a141cd4bbda4d3d901ef013ce.tar.gz
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/minidump_processor.cc')
-rw-r--r--src/processor/minidump_processor.cc25
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;