Toolbar customizer crashes on Leopard when using menu delegate
Toolbar customizer crashes on Leopard when using menu delegate
- Subject: Toolbar customizer crashes on Leopard when using menu delegate
- From: Markus Spoettl <email@hidden>
- Date: Tue, 23 Mar 2010 22:02:17 -0400
Hello,
I've been running into a strange crash for a toolbar customizer that happens only on Leopard and works fine on Snow Leopard.
My toolbar contains an item hosting a NSPopUpButton which has a menu. That menu contains regular items and a sub-menu which has its delegate assigned to the File's Owner because it's dynamic and needs to be rebuilt each time it is displayed. I have found out that the mere fact the delegate is set causes a crash when the toolbar customizer is created (through "Customize Toolbar…").
Ultimately the whole thing goes down badly inside AppKit (I'm pasting the stack below if someone wants to take a look at it). In the process of digging into this issue I also found that setting the delegate causes the entire nib to be loaded again - probably to resolve the delegate, kind of recursive.
Well, I just thought this would be interesting for the list, since it's working completely fine on Snow Leopard but not on Leopard (Deployment Target of this project is 10.5). Unless of course this was foreseeable in which case I'd like to hear about it.
Regards
Markus
Thread 0 Crashed:
0 libobjc.A.dylib 0x9173e699 objc_msgSend + 41
1 com.apple.AppKit 0x947cb9fa -[NSMenu encodeWithCoder:] + 444
2 com.apple.Foundation 0x9526138d _encodeObject + 621
3 com.apple.AppKit 0x947cd08f -[NSMenuItem encodeWithCoder:] + 1563
4 com.apple.Foundation 0x9526138d _encodeObject + 621
5 com.apple.Foundation 0x952d1bdd -[NSKeyedArchiver _encodeArrayOfObjects:forKey:] + 541
6 com.apple.Foundation 0x952815a7 -[NSArray(NSArray) encodeWithCoder:] + 615
7 com.apple.Foundation 0x9526138d _encodeObject + 621
8 com.apple.AppKit 0x947cb916 -[NSMenu encodeWithCoder:] + 216
9 com.apple.Foundation 0x9526138d _encodeObject + 621
10 com.apple.AppKit 0x9481e547 -[NSPopUpButtonCell encodeWithCoder:] + 269
11 com.apple.Foundation 0x9526138d _encodeObject + 621
12 com.apple.AppKit 0x94503809 -[NSControl encodeWithCoder:] + 349
13 com.apple.Foundation 0x9526138d _encodeObject + 621
14 com.apple.Foundation 0x95260b08 +[NSKeyedArchiver archivedDataWithRootObject:] + 184
15 com.apple.AppKit 0x948f91b9 -[NSToolbarItem _copyOfCustomView] + 47
16 com.apple.AppKit 0x948f9278 -[NSToolbarItem copyWithZone:] + 141
17 com.apple.CoreFoundation 0x934e2f9a -[NSObject copy] + 42
18 com.apple.AppKit 0x9449585a -[NSToolbar _newItemFromItemIdentifier:requireImmediateLoad:willBeInsertedIntoToolbar:] + 306
19 com.apple.AppKit 0x94495649 -[NSToolbar _insertNewItemWithItemIdentifier:atIndex:notifyDelegate:notifyView:notifyFamilyAndUpdateDefaults:] + 86
20 com.apple.AppKit 0x944ee904 -[NSToolbar _appendNewItemWithItemIdentifier:notifyDelegate:notifyView:notifyFamilyAndUpdateDefaults:] + 104
21 com.apple.AppKit 0x94497227 -[NSToolbar _setCurrentItemsToItemIdentifiers:notifyDelegate:notifyView:notifyFamilyAndUpdateDefaults:] + 336
22 com.apple.AppKit 0x948f18eb -[NSToolbar _loadInitialItemIdentifiers:requireImmediateLoad:] + 138
23 com.apple.AppKit 0x948f7e93 -[NSToolbarConfigPanel _loadDefaultSetImageRep] + 861
24 com.apple.AppKit 0x948f6d6b -[NSToolbarConfigPanel _loadData] + 500
25 com.apple.AppKit 0x948f674d -[NSToolbarConfigPanel initForToolbar:withWidth:] + 269
26 com.apple.AppKit 0x948f1e45 -[NSToolbar _runCustomizationPanel] + 214
27 com.apple.AppKit 0x943d7e8f -[NSApplication sendAction:to:from:] + 112
28 com.apple.AppKit 0x94486b64 -[NSMenu performActionForItemAtIndex:] + 493
29 com.apple.AppKit 0x94486869 -[NSCarbonMenuImpl performActionWithHighlightingForItemAtIndex:] + 220
30 com.apple.AppKit 0x944634ba AppKitMenuEventHandler + 6608
31 com.apple.HIToolbox 0x93e0813d DispatchEventToHandlers(EventTargetRec*, OpaqueEventRef*, HandlerCallRec*) + 1181
32 com.apple.HIToolbox 0x93e0757b SendEventToEventTargetInternal(OpaqueEventRef*, OpaqueEventTargetRef*, HandlerCallRec*) + 405
33 com.apple.HIToolbox 0x93e23ecc SendEventToEventTarget + 52
34 com.apple.HIToolbox 0x93e581e7 SendHICommandEvent(unsigned long, HICommand const*, unsigned long, unsigned long, unsigned char, OpaqueEventTargetRef*, OpaqueEventTargetRef*, OpaqueEventRef**) + 411
35 com.apple.HIToolbox 0x93e7e959 SendMenuCommandWithContextAndModifiers + 59
36 com.apple.HIToolbox 0x93e7e914 SendMenuItemSelectedEvent + 134
37 com.apple.HIToolbox 0x93e7e82a FinishMenuSelection(MenuData*, MenuData*, MenuResult*, MenuResult*, unsigned long, unsigned long, unsigned long, unsigned char) + 162
38 com.apple.HIToolbox 0x93eceb31 PopUpMenuSelectCore(MenuData*, Point, double, Point, unsigned short, unsigned int, Rect const*, unsigned short, unsigned long, Rect const*, Rect const*, __CFString const*, OpaqueMenuRef**, unsigned short*) + 1763
39 com.apple.HIToolbox 0x93ece3fb _HandlePopUpMenuSelection7 + 627
40 com.apple.AppKit 0x9454f19b _NSPopUpCarbonMenu3 + 3081
41 com.apple.AppKit 0x9454e588 _NSPopUpCarbonMenu2 + 155
42 com.apple.AppKit 0x9454e4e9 _NSPopUpCarbonMenu1 + 82
43 com.apple.AppKit 0x9454e449 -[NSCarbonMenuImpl _popUpContextMenu:withEvent:forView:withFont:] + 237
44 com.apple.AppKit 0x9454e282 -[NSMenu _popUpContextMenu:withEvent:forView:withFont:] + 285
45 com.apple.AppKit 0x9454e15f -[NSMenu _popUpContextMenu:withEvent:forView:] + 63
46 com.apple.AppKit 0x9454e11a -[NSMenu _popUpMenuWithEvent:forView:] + 52
47 com.apple.AppKit 0x943d5731 -[NSWindow sendEvent:] + 8511
48 com.apple.AppKit 0x943a16a5 -[NSApplication sendEvent:] + 2939
49 com.apple.AppKit 0x942fefe7 -[NSApplication run] + 867
50 com.apple.AppKit 0x942cc1d8 NSApplicationMain + 574
51 com.my.app 0x00007d59 main + 30
52 com.my.app 0x000025ae start + 54
--
__________________________________________
Markus Spoettl
Attachment:
smime.p7s
Description: S/MIME cryptographic signature
_______________________________________________
Cocoa-dev mailing list (email@hidden)
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:
This email sent to email@hidden