Last week I found that an app would crash if I displayed a modal dialog in -applicationWillFinishLaunching (note: *Will*), *and* *then* ran a modal session on a window in -applicationDidFinishLaunching: (note: *Did*).
I've now reproduced it in a very simple demo, shown below. Why does this crash? Thanks, Jerry Krinock @implementation MyAppDelegate - (void)applicationWillFinishLaunching:(NSNotification*)aNotification { NSRunAlertPanel(@"Hello", @"A crash is coming soon.", @"OK", nil, nil) ; } - (void)applicationDidFinishLaunching:(NSNotification*)aNotification { NSWindow* window = [[NSWindow alloc] initWithContentRect:NSMakeRect(100, 100, 200, 200) styleMask:NSTitledWindowMask backing:NSBackingStoreBuffered defer:NO] ; // Crash here… NSModalSession session = [NSApp beginModalSessionForWindow:window] ; [NSApp runModalSession:session] ; } @end ***** Notes ***** • If you don't run the NSRunAlertPanel(), then there is no crash • If you move the NSRunAlertPanel() from -applicationWillFinishLaunching: to -applicationDidFinishLaunching:, then there is no crash • Running Mac OS X 10.6.4, Intel-32 • Same crash compiling with either SDK Mac OS X 10.5 or 10.6 ***** Console Output ***** Kind of looks like something messaged the GUI from a non-main thread. But 80f is the main thread. Running… [20208:80f] *** __NSAutoreleaseNoPool(): Object 0x30e200 of class NSCFString autoreleased with no pool in place - just leaking [20208:80f] *** __NSAutoreleaseNoPool(): Object 0x30e320 of class NSCFString autoreleased with no pool in place - just leaking [20208:80f] *** Assertion failure in -[NSApplication run], /SourceCache/AppKit/AppKit-1038.32/AppKit.subproj/NSApplication.m:2579 [20208:80f] *** __NSAutoreleaseNoPool(): Object 0x141d50 of class NSCFString autoreleased with no pool in place - just leaking [20208:80f] *** __NSAutoreleaseNoPool(): Object 0x3211d0 of class NSException autoreleased with no pool in place - just leaking [20208:80f] *** __NSAutoreleaseNoPool(): Object 0x30f3c0 of class _NSCallStackArray autoreleased with no pool in place - just leaking [20208:80f] *** __NSAutoreleaseNoPool(): Object 0x310420 of class _NSCallStackArray autoreleased with no pool in place - just leaking [20208:80f] An uncaught exception was raised [20208:80f] NSApp with wrong _running count [20208:80f] *** __NSAutoreleaseNoPool(): Object 0x3106f0 of class NSCFString autoreleased with no pool in place - just leaking [20208:80f] *** __NSAutoreleaseNoPool(): Object 0x1008400 of class NSCFString autoreleased with no pool in place - just leaking [20208:80f] *** __NSAutoreleaseNoPool(): Object 0x310390 of class NSConcreteMutableData autoreleased with no pool in place - just leaking [20208:80f] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'NSApp with wrong _running count' *** Call stack at first throw: ( 0 CoreFoundation 0x98b9bbba __raiseError + 410 1 libobjc.A.dylib 0x9957f509 objc_exception_throw + 56 2 CoreFoundation 0x98b9b8e8 +[NSException raise:format:arguments:] + 136 3 Foundation 0x958f3dc3 -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 116 4 AppKit 0x90fd2332 -[NSApplication run] + 268 5 AppKit 0x90fca5ed NSApplicationMain + 574 6 AppWillFinishCrashing 0x00001c84 main + 30 7 AppWillFinishCrashing 0x00001c3a start + 54 ) _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com