76 lines
2.9 KiB
Diff
76 lines
2.9 KiB
Diff
diff --git a/src/google_breakpad/common/minidump_exception_linux.h b/src/google_breakpad/common/minidump_exception_linux.h
|
|
--- a/src/google_breakpad/common/minidump_exception_linux.h
|
|
+++ b/src/google_breakpad/common/minidump_exception_linux.h
|
|
@@ -83,16 +83,20 @@ typedef enum {
|
|
MD_EXCEPTION_CODE_LIN_DUMP_REQUESTED = 0xFFFFFFFF /* No exception,
|
|
dump requested. */
|
|
} MDExceptionCodeLinux;
|
|
|
|
/* For (MDException).exception_flags. These values come from
|
|
* asm-generic/siginfo.h.
|
|
*/
|
|
typedef enum {
|
|
+ /* Generic */
|
|
+ MD_EXCEPTION_FLAG_LIN_SI_USER = 0,
|
|
+ MD_EXCEPTION_FLAG_LIN_SI_KERNEL = 0x80,
|
|
+
|
|
/* SIGILL */
|
|
MD_EXCEPTION_FLAG_LIN_ILL_ILLOPC = 1,
|
|
MD_EXCEPTION_FLAG_LIN_ILL_ILLOPN = 2,
|
|
MD_EXCEPTION_FLAG_LIN_ILL_ILLADR = 3,
|
|
MD_EXCEPTION_FLAG_LIN_ILL_ILLTRP = 4,
|
|
MD_EXCEPTION_FLAG_LIN_ILL_PRVOPC = 5,
|
|
MD_EXCEPTION_FLAG_LIN_ILL_PRVREG = 6,
|
|
MD_EXCEPTION_FLAG_LIN_ILL_COPROC = 7,
|
|
diff --git a/src/processor/minidump_processor.cc b/src/processor/minidump_processor.cc
|
|
--- a/src/processor/minidump_processor.cc
|
|
+++ b/src/processor/minidump_processor.cc
|
|
@@ -1401,16 +1401,22 @@ string MinidumpProcessor::GetCrashReason
|
|
reason = "SIGTRAP";
|
|
break;
|
|
case MD_EXCEPTION_CODE_LIN_SIGABRT:
|
|
reason = "SIGABRT";
|
|
break;
|
|
case MD_EXCEPTION_CODE_LIN_SIGBUS:
|
|
reason = "SIGBUS / ";
|
|
switch (exception_flags) {
|
|
+ case MD_EXCEPTION_FLAG_LIN_SI_USER:
|
|
+ reason.append("SI_USER");
|
|
+ break;
|
|
+ case MD_EXCEPTION_FLAG_LIN_SI_KERNEL:
|
|
+ reason.append("SI_KERNEL");
|
|
+ break;
|
|
case MD_EXCEPTION_FLAG_LIN_BUS_ADRALN:
|
|
reason.append("BUS_ADRALN");
|
|
break;
|
|
case MD_EXCEPTION_FLAG_LIN_BUS_ADRERR:
|
|
reason.append("BUS_ADRERR");
|
|
break;
|
|
case MD_EXCEPTION_FLAG_LIN_BUS_OBJERR:
|
|
reason.append("BUS_OBJERR");
|
|
@@ -1462,18 +1468,24 @@ string MinidumpProcessor::GetCrashReason
|
|
break;
|
|
case MD_EXCEPTION_CODE_LIN_SIGKILL:
|
|
reason = "SIGKILL";
|
|
break;
|
|
case MD_EXCEPTION_CODE_LIN_SIGUSR1:
|
|
reason = "SIGUSR1";
|
|
break;
|
|
case MD_EXCEPTION_CODE_LIN_SIGSEGV:
|
|
- reason = "SIGSEGV /";
|
|
+ reason = "SIGSEGV / ";
|
|
switch (exception_flags) {
|
|
+ case MD_EXCEPTION_FLAG_LIN_SI_USER:
|
|
+ reason.append("SI_USER");
|
|
+ break;
|
|
+ case MD_EXCEPTION_FLAG_LIN_SI_KERNEL:
|
|
+ reason.append("SI_KERNEL");
|
|
+ break;
|
|
case MD_EXCEPTION_FLAG_LIN_SEGV_MAPERR:
|
|
reason.append("SEGV_MAPERR");
|
|
break;
|
|
case MD_EXCEPTION_FLAG_LIN_SEGV_ACCERR:
|
|
reason.append("SEGV_ACCERR");
|
|
break;
|
|
case MD_EXCEPTION_FLAG_LIN_SEGV_BNDERR:
|
|
reason.append("SEGV_BNDERR");
|