On May 19, 2015, at 9:26 PM, Graham Cox <graham....@bigpond.com> wrote:
> Just to be clear: it crashes when there is no involvement of my code at all - > this is the stack trace without the override, but with zombies enabled: > > Crashed Thread: 0 Dispatch queue: com.apple.main-thread > > Exception Type: EXC_BREAKPOINT (SIGTRAP) > Exception Codes: 0x0000000000000002, 0x0000000000000000 > > Thread 0 Crashed:: Dispatch queue: com.apple.main-thread > 0 com.apple.CoreFoundation 0x00007fff91e9fd20 ___forwarding___ + > 768 > 1 com.apple.CoreFoundation 0x00007fff91e9f998 > _CF_forwarding_prep_0 + 120 > 2 com.apple.AppKit 0x00007fff8cdf23c7 -[NSWindow > supplementalTargetForAction:sender:] + 240 > 3 com.apple.AppKit 0x00007fff8cdf1f74 > _objectFromResponderChainWhichRespondsToAction + 227 > 4 com.apple.AppKit 0x00007fff8cdf1ac0 > _NSTargetForSendAction + 2861 > 5 com.apple.AppKit 0x00007fff8cdf0e3e -[NSApplication > targetForAction:to:from:] + 329 > 6 com.apple.AppKit 0x00007fff8d07b102 -[NSFontPanel > _canShowEffects] + 44 > 7 com.apple.AppKit 0x00007fff8d07b0bb -[NSFontPanel > _showEffects] + 31 > 8 com.apple.AppKit 0x00007fff8d07a675 -[NSFontPanel > windowDidUpdate:] + 537 > 9 com.apple.CoreFoundation 0x00007fff91f1345c > __CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__ + 12 > 10 com.apple.CoreFoundation 0x00007fff91e03634 _CFXNotificationPost > + 3140 > 11 com.apple.Foundation 0x00007fff975a59d1 > -[NSNotificationCenter postNotificationName:object:userInfo:] + 66 > 12 com.apple.CoreFoundation 0x00007fff91e88d80 -[NSArray > makeObjectsPerformSelector:] + 496 > 13 com.apple.AppKit 0x00007fff8ccac5ea > -[NSApplication(NSWindowCache) _updateWindowsUsingCache] + 495 > 14 com.apple.AppKit 0x00007fff8ccac399 -[NSApplication > updateWindows] + 70 > 15 com.apple.AppKit 0x00007fff8d0a181f __38-[NSApplication > setWindowsNeedUpdate:]_block_invoke2510 + 76 > 16 com.apple.CoreFoundation 0x00007fff91e73127 > __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 23 > 17 com.apple.CoreFoundation 0x00007fff91e73080 > __CFRunLoopDoObservers + 368 > 18 com.apple.CoreFoundation 0x00007fff91e65188 __CFRunLoopRun + 872 > 19 com.apple.CoreFoundation 0x00007fff91e64bd8 CFRunLoopRunSpecific > + 296 > 20 com.apple.HIToolbox 0x00007fff9729656f > RunCurrentEventLoopInMode + 235 > 21 com.apple.HIToolbox 0x00007fff972961ee > ReceiveNextEventCommon + 179 > 22 com.apple.HIToolbox 0x00007fff9729612b > _BlockUntilNextEventMatchingListInModeWithFilter + 71 > 23 com.apple.AppKit 0x00007fff8ccaa9bb _DPSNextEvent + 978 > 24 com.apple.AppKit 0x00007fff8cca9f68 -[NSApplication > nextEventMatchingMask:untilDate:inMode:dequeue:] + 346 > 25 com.apple.AppKit 0x00007fff8cc9fbf3 -[NSApplication run] > + 594 > 26 com.apple.AppKit 0x00007fff8cc1c354 NSApplicationMain + > 1832 > > > > At line 2, it’s clearly trying to access a NSWindow zombie. I'm not sure that's true. I think if the window were the zombie, the crash would not show a frame in an NSWindow method, it would occur at the point where that method was called. I suspect the problem is that the window is trying to check with its delegate/controller to see if it might respond to the action and the delegate/controller is the zombie. If I'm right, the problem could probably be solved by clearing the window's delegate property in the -dealloc of the delegate/controller object. There should be a log message written which will clarify. It might or might not get included in the crash report, but it should be in the console log. What does that say? > I’m pretty sure this is the window I just closed that closed the document. > It’s hard to be 100% certain because the same result does not arise in the > debugger - I have to export a complete app to see the problem, so I can’t > examine the window’s address directly. Exporting a complete app is not mutually exclusive of running the app under the debugger. You can tell Xcode to run the exported app when debugging by mucking with the scheme. Or, you can directly run it using lldb from the command line. Does the problem also not happen if you run the app under Instruments with the Zombies template? If it does happen, that will help identify the history of the zombie. If you're just using NSZombieEnabled=YES and running from the command line, you can also use MallocStackLoggingNoCompact=1. When the breakpoint/trap occurs, you can use the malloc_history tool to examine the history of the address of the zombie object. Regards, Ken _______________________________________________ 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: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com