Unhook CR exception handler.
This commit is contained in:
parent
734226007f
commit
b2628357b3
|
@ -24,7 +24,6 @@
|
||||||
#include "mozilla/dom/VideoDecoderManagerChild.h"
|
#include "mozilla/dom/VideoDecoderManagerChild.h"
|
||||||
#include "mozilla/layers/LayerTreeOwnerTracker.h"
|
#include "mozilla/layers/LayerTreeOwnerTracker.h"
|
||||||
#include "nsDebugImpl.h"
|
#include "nsDebugImpl.h"
|
||||||
#include "nsExceptionHandler.h"
|
|
||||||
#include "nsThreadManager.h"
|
#include "nsThreadManager.h"
|
||||||
#include "prenv.h"
|
#include "prenv.h"
|
||||||
#include "ProcessUtils.h"
|
#include "ProcessUtils.h"
|
||||||
|
|
|
@ -23,8 +23,6 @@
|
||||||
#include "prenv.h"
|
#include "prenv.h"
|
||||||
#include "nsXPCOMPrivate.h"
|
#include "nsXPCOMPrivate.h"
|
||||||
|
|
||||||
#include "nsExceptionHandler.h"
|
|
||||||
|
|
||||||
#include "nsDirectoryServiceDefs.h"
|
#include "nsDirectoryServiceDefs.h"
|
||||||
#include "nsIFile.h"
|
#include "nsIFile.h"
|
||||||
#include "nsPrintfCString.h"
|
#include "nsPrintfCString.h"
|
||||||
|
|
|
@ -17,7 +17,6 @@
|
||||||
#include "nsIFile.h"
|
#include "nsIFile.h"
|
||||||
#include "nsAppRunner.h"
|
#include "nsAppRunner.h"
|
||||||
#include "APKOpen.h"
|
#include "APKOpen.h"
|
||||||
#include "nsExceptionHandler.h"
|
|
||||||
|
|
||||||
#define LOG(args...) __android_log_print(ANDROID_LOG_INFO, MOZ_APP_NAME, args)
|
#define LOG(args...) __android_log_print(ANDROID_LOG_INFO, MOZ_APP_NAME, args)
|
||||||
|
|
||||||
|
|
|
@ -31,7 +31,6 @@
|
||||||
#include "nsAppRunner.h"
|
#include "nsAppRunner.h"
|
||||||
#include "nsAutoRef.h"
|
#include "nsAutoRef.h"
|
||||||
#include "nsDirectoryServiceDefs.h"
|
#include "nsDirectoryServiceDefs.h"
|
||||||
#include "nsExceptionHandler.h"
|
|
||||||
#include "nsString.h"
|
#include "nsString.h"
|
||||||
#include "nsThreadUtils.h"
|
#include "nsThreadUtils.h"
|
||||||
#include "nsJSUtils.h"
|
#include "nsJSUtils.h"
|
||||||
|
|
|
@ -7,7 +7,6 @@
|
||||||
|
|
||||||
#include "prenv.h"
|
#include "prenv.h"
|
||||||
#include "nsXULAppAPI.h"
|
#include "nsXULAppAPI.h"
|
||||||
#include "nsExceptionHandler.h"
|
|
||||||
#include "nsDebug.h"
|
#include "nsDebug.h"
|
||||||
|
|
||||||
#include "mozilla/X11Util.h"
|
#include "mozilla/X11Util.h"
|
||||||
|
|
|
@ -13,10 +13,6 @@
|
||||||
|
|
||||||
#import <Foundation/Foundation.h>
|
#import <Foundation/Foundation.h>
|
||||||
|
|
||||||
#ifdef DEBUG
|
|
||||||
#import <ExceptionHandling/NSExceptionHandler.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
#include "nsError.h"
|
#include "nsError.h"
|
||||||
|
@ -40,80 +36,6 @@ nsObjCExceptionLog(NSException* aException)
|
||||||
{
|
{
|
||||||
NSLog(@"Mozilla has caught an Obj-C exception [%@: %@]",
|
NSLog(@"Mozilla has caught an Obj-C exception [%@: %@]",
|
||||||
[aException name], [aException reason]);
|
[aException name], [aException reason]);
|
||||||
|
|
||||||
#ifdef DEBUG
|
|
||||||
@try {
|
|
||||||
// Try to get stack information out of the exception. 10.5 returns the stack
|
|
||||||
// info with the callStackReturnAddresses selector.
|
|
||||||
NSArray* stackTrace = nil;
|
|
||||||
if ([aException respondsToSelector:@selector(callStackReturnAddresses)]) {
|
|
||||||
NSArray* addresses = (NSArray*)
|
|
||||||
[aException performSelector:@selector(callStackReturnAddresses)];
|
|
||||||
if ([addresses count]) {
|
|
||||||
stackTrace = addresses;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 10.4 doesn't respond to callStackReturnAddresses so we'll try to pull the
|
|
||||||
// stack info out of the userInfo. It might not be there, sadly :(
|
|
||||||
if (!stackTrace) {
|
|
||||||
stackTrace = [[aException userInfo] objectForKey:NSStackTraceKey];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (stackTrace) {
|
|
||||||
// The command line should look like this:
|
|
||||||
// /usr/bin/atos -p <pid> -printHeader <stack frame addresses>
|
|
||||||
NSMutableArray* args =
|
|
||||||
[NSMutableArray arrayWithCapacity:[stackTrace count] + 3];
|
|
||||||
|
|
||||||
[args addObject:@"-p"];
|
|
||||||
int pid = [[NSProcessInfo processInfo] processIdentifier];
|
|
||||||
[args addObject:[NSString stringWithFormat:@"%d", pid]];
|
|
||||||
|
|
||||||
[args addObject:@"-printHeader"];
|
|
||||||
|
|
||||||
unsigned int stackCount = [stackTrace count];
|
|
||||||
unsigned int stackIndex = 0;
|
|
||||||
for (; stackIndex < stackCount; stackIndex++) {
|
|
||||||
unsigned long address =
|
|
||||||
[[stackTrace objectAtIndex:stackIndex] unsignedLongValue];
|
|
||||||
[args addObject:[NSString stringWithFormat:@"0x%lx", address]];
|
|
||||||
}
|
|
||||||
|
|
||||||
NSPipe* outPipe = [NSPipe pipe];
|
|
||||||
|
|
||||||
NSTask* task = [[NSTask alloc] init];
|
|
||||||
[task setLaunchPath:@"/usr/bin/atos"];
|
|
||||||
[task setArguments:args];
|
|
||||||
[task setStandardOutput:outPipe];
|
|
||||||
[task setStandardError:outPipe];
|
|
||||||
|
|
||||||
NSLog(@"Generating stack trace for Obj-C exception...");
|
|
||||||
|
|
||||||
// This will throw an exception if the atos tool cannot be found, and in
|
|
||||||
// that case we'll just hit our @catch block below.
|
|
||||||
[task launch];
|
|
||||||
|
|
||||||
[task waitUntilExit];
|
|
||||||
[task release];
|
|
||||||
|
|
||||||
NSData* outData =
|
|
||||||
[[outPipe fileHandleForReading] readDataToEndOfFile];
|
|
||||||
NSString* outString =
|
|
||||||
[[NSString alloc] initWithData:outData encoding:NSUTF8StringEncoding];
|
|
||||||
|
|
||||||
NSLog(@"Stack trace:\n%@", outString);
|
|
||||||
|
|
||||||
[outString release];
|
|
||||||
} else {
|
|
||||||
NSLog(@"<No stack information available for Obj-C exception>");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@catch (NSException* exn) {
|
|
||||||
NSLog(@"Failed to generate stack trace for Obj-C exception [%@: %@]",
|
|
||||||
[exn name], [exn reason]);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
__attribute__((unused))
|
__attribute__((unused))
|
||||||
|
|
Loading…
Reference in New Issue
Block a user