aboutsummaryrefslogtreecommitdiff
path: root/src/client/mac/crash_generation
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/mac/crash_generation')
-rw-r--r--src/client/mac/crash_generation/Inspector.h2
-rw-r--r--src/client/mac/crash_generation/Inspector.mm3
2 files changed, 5 insertions, 0 deletions
diff --git a/src/client/mac/crash_generation/Inspector.h b/src/client/mac/crash_generation/Inspector.h
index 9ee5c48c..dda53703 100644
--- a/src/client/mac/crash_generation/Inspector.h
+++ b/src/client/mac/crash_generation/Inspector.h
@@ -56,6 +56,7 @@ enum {
struct InspectorInfo {
int exception_type;
int exception_code;
+ int exception_subcode;
unsigned int parameter_count; // key-value pairs
};
@@ -177,6 +178,7 @@ class Inspector {
int exception_type_;
int exception_code_;
+ int exception_subcode_;
mach_port_t remote_task_;
mach_port_t crashing_thread_;
mach_port_t handler_thread_;
diff --git a/src/client/mac/crash_generation/Inspector.mm b/src/client/mac/crash_generation/Inspector.mm
index 649d4b15..5c5c2218 100644
--- a/src/client/mac/crash_generation/Inspector.mm
+++ b/src/client/mac/crash_generation/Inspector.mm
@@ -297,6 +297,7 @@ kern_return_t Inspector::ReadMessages() {
InspectorInfo &info = (InspectorInfo &)*message.GetData();
exception_type_ = info.exception_type;
exception_code_ = info.exception_code;
+ exception_subcode_ = info.exception_subcode;
#if VERBOSE
printf("message ID = %d\n", message.GetMessageID());
@@ -310,6 +311,7 @@ kern_return_t Inspector::ReadMessages() {
#if VERBOSE
printf("exception_type = %d\n", exception_type_);
printf("exception_code = %d\n", exception_code_);
+ printf("exception_subcode = %d\n", exception_subcode_);
printf("remote_task = %d\n", remote_task_);
printf("crashing_thread = %d\n", crashing_thread_);
printf("handler_thread = %d\n", handler_thread_);
@@ -435,6 +437,7 @@ bool Inspector::InspectTask() {
if (exception_type_ && exception_code_) {
generator.SetExceptionInformation(exception_type_,
exception_code_,
+ exception_subcode_,
crashing_thread_);
}