Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code | Sign in
(7)

Unified Diff: client/mac/crash_generation/Inspector.mm

Issue 386001: A hackish patch to make Breakpad upload the log if it's impossible to create a file in the crashed … Base URL: http://google-breakpad.googlecode.com/svn/trunk/src/
Patch Set: Created 12 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Please Sign in to add in-line comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: client/mac/crash_generation/Inspector.mm
===================================================================
--- client/mac/crash_generation/Inspector.mm (revision 963)
+++ client/mac/crash_generation/Inspector.mm (working copy)
@@ -257,19 +257,38 @@
"dump generation.", parameters_read, info.parameter_count);
return KERN_FAILURE;
}
+
+ if (config_params_.GetValueForKey(BREAKPAD_HAS_EXTRA_LOG)) {
+
+ NSString *minidumpDir = MinidumpDirectory();
+
+ MinidumpLocation minidumpLocation(minidumpDir);
+ NSString *logFilePath = MinidumpFile(&minidumpLocation, @"log");
+
+ MachReceiveMessage ool_message;
+ result = receive_port.WaitForMessage(&ool_message, 1000);
+ if(result == KERN_SUCCESS) {
+ MachMsgOOLDescriptor *desc =
+ (MachMsgOOLDescriptor*)ool_message.GetDescriptor(0);
+ FILE *crash_log = fopen([logFilePath UTF8String], "w");
+ fprintf(crash_log, "%s", desc->address);
+ fclose(crash_log);
+
+ NSString *logFileKey = [NSString stringWithFormat:@"%@0",
jeremy 2012/05/21 07:42:33 Since we only currently have one log file, I don't
+ @BREAKPAD_LOGFILE_KEY_PREFIX];
+
+ config_params_.SetKeyValue([logFileKey UTF8String],
+ [logFilePath UTF8String]);
+ }
+ }
}
return result;
}
//=============================================================================
-bool Inspector::InspectTask() {
- // keep the task quiet while we're looking at it
- task_suspend(remote_task_);
- DEBUGLOG(stderr, "Suspended Remote task\n");
-
+NSString *Inspector::MinidumpDirectory() {
NSString *minidumpDir;
-
const char *minidumpDirectory =
config_params_.GetValueForKey(BREAKPAD_DUMP_DIRECTORY);
@@ -299,26 +318,43 @@
minidumpDir = [[NSString stringWithUTF8String:minidumpDirectory]
stringByExpandingTildeInPath];
}
- DEBUGLOG(stderr,
- "Writing minidump to directory (%s)\n",
- [minidumpDir UTF8String]);
+ return minidumpDir;
+}
- MinidumpLocation minidumpLocation(minidumpDir);
-
+//=============================================================================
+NSString *Inspector::MinidumpFile(MinidumpLocation *minidumpLocation,
+ NSString *extension) {
// Obscure bug alert:
// Don't use [NSString stringWithFormat] to build up the path here since it
// assumes system encoding and in RTL locales will prepend an LTR override
// character for paths beginning with '/' which fileSystemRepresentation does
// not remove. Filed as rdar://6889706 .
NSString *path_ns = [NSString
- stringWithUTF8String:minidumpLocation.GetPath()];
+ stringWithUTF8String:minidumpLocation->GetPath()];
NSString *pathid_ns = [NSString
- stringWithUTF8String:minidumpLocation.GetID()];
+ stringWithUTF8String:minidumpLocation->GetID()];
NSString *minidumpPath = [path_ns stringByAppendingPathComponent:pathid_ns];
minidumpPath = [minidumpPath
- stringByAppendingPathExtension:@"dmp"];
-
+ stringByAppendingPathExtension:extension];
+ return minidumpPath;
+}
+
+//=============================================================================
+bool Inspector::InspectTask() {
+ // keep the task quiet while we're looking at it
+ task_suspend(remote_task_);
+ DEBUGLOG(stderr, "Suspended Remote task\n");
+
+ NSString *minidumpDir = MinidumpDirectory();
+
DEBUGLOG(stderr,
+ "Writing minidump to directory (%s)\n",
+ [minidumpDir UTF8String]);
+
+ MinidumpLocation minidumpLocation(minidumpDir);
+ NSString *minidumpPath = MinidumpFile(&minidumpLocation, @"dmp");
+
+ DEBUGLOG(stderr,
"minidump path (%s)\n",
[minidumpPath UTF8String]);

Powered by Google App Engine
RSS Feeds Recent Issues | This issue
This is Rietveld 1004:630ec63f810e-tainted