aboutsummaryrefslogtreecommitdiff
path: root/src/client/mac/crash_generation
diff options
context:
space:
mode:
authorted.mielczarek <ted.mielczarek@4c0a9323-5329-0410-9bdc-e9ce6186880e>2009-06-12 20:36:53 +0000
committerted.mielczarek <ted.mielczarek@4c0a9323-5329-0410-9bdc-e9ce6186880e>2009-06-12 20:36:53 +0000
commit61e88c7ad7eb072977b4d4d26bcf8929b75af2d4 (patch)
tree1a01c4085f3a246fa4d51a8fbe69144544bcb752 /src/client/mac/crash_generation
parentFix for generating dumps on-demand to set the requesting thread to the curren... (diff)
downloadbreakpad-61e88c7ad7eb072977b4d4d26bcf8929b75af2d4.tar.xz
issue 323 - OS X exception handler / minidump generator should set exception address correctly for EXC_BAD_ACCESS . r=nealsid at http://breakpad.appspot.com/15002
git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@350 4c0a9323-5329-0410-9bdc-e9ce6186880e
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_);
}