mirror of
https://github.com/yuzu-emu/breakpad.git
synced 2025-02-03 00:21:10 +00:00
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
This commit is contained in:
parent
c0fc538ae4
commit
4f182c746b
|
@ -96,6 +96,10 @@ typedef enum {
|
||||||
/* EXCEPTION_STACK_OVERFLOW */
|
/* EXCEPTION_STACK_OVERFLOW */
|
||||||
MD_EXCEPTION_CODE_WIN_POSSIBLE_DEADLOCK = 0xc0000194,
|
MD_EXCEPTION_CODE_WIN_POSSIBLE_DEADLOCK = 0xc0000194,
|
||||||
/* EXCEPTION_POSSIBLE_DEADLOCK */
|
/* EXCEPTION_POSSIBLE_DEADLOCK */
|
||||||
|
MD_EXCEPTION_CODE_WIN_STACK_BUFFER_OVERRUN = 0xc0000409,
|
||||||
|
/* STATUS_STACK_BUFFER_OVERRUN */
|
||||||
|
MD_EXCEPTION_CODE_WIN_HEAP_CORRUPTION = 0xc0000374,
|
||||||
|
/* STATUS_HEAP_CORRUPTION */
|
||||||
MD_EXCEPTION_CODE_WIN_UNHANDLED_CPP_EXCEPTION = 0xe06d7363
|
MD_EXCEPTION_CODE_WIN_UNHANDLED_CPP_EXCEPTION = 0xe06d7363
|
||||||
/* Per http://support.microsoft.com/kb/185294,
|
/* Per http://support.microsoft.com/kb/185294,
|
||||||
generated by Visual C++ compiler */
|
generated by Visual C++ compiler */
|
||||||
|
|
|
@ -703,7 +703,24 @@ string MinidumpProcessor::GetCrashReason(Minidump *dump, u_int64_t *address) {
|
||||||
// data.
|
// data.
|
||||||
// This information is useful in addition to the code address, which
|
// This information is useful in addition to the code address, which
|
||||||
// will be present in the crash thread's instruction field anyway.
|
// will be present in the crash thread's instruction field anyway.
|
||||||
|
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";
|
reason = "EXCEPTION_ACCESS_VIOLATION";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
reason = "EXCEPTION_ACCESS_VIOLATION";
|
||||||
|
}
|
||||||
if (address &&
|
if (address &&
|
||||||
raw_exception->exception_record.number_parameters >= 2) {
|
raw_exception->exception_record.number_parameters >= 2) {
|
||||||
*address =
|
*address =
|
||||||
|
@ -764,6 +781,12 @@ string MinidumpProcessor::GetCrashReason(Minidump *dump, u_int64_t *address) {
|
||||||
case MD_EXCEPTION_CODE_WIN_POSSIBLE_DEADLOCK:
|
case MD_EXCEPTION_CODE_WIN_POSSIBLE_DEADLOCK:
|
||||||
reason = "EXCEPTION_POSSIBLE_DEADLOCK";
|
reason = "EXCEPTION_POSSIBLE_DEADLOCK";
|
||||||
break;
|
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:
|
case MD_EXCEPTION_CODE_WIN_UNHANDLED_CPP_EXCEPTION:
|
||||||
reason = "Unhandled C++ Exception";
|
reason = "Unhandled C++ Exception";
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in a new issue