Thanks again for your reply and help.

>> #CategoryEvent TypeRefCtTimestampAddressSizeResponsible LibraryResponsible
>> Caller
>> 0NSMenuItemMalloc13059475443200x1a4cccd064AppKit-[NSMenu
>> insertItemWithTitle:action:keyEquivalent:atIndex:]
>> 1NSMenuItemFree03289974881280x1a4cccd0-64AppKit-[NSMenuItem dealloc]

> Hmm, these are the only alloc and free events recorded in Instruments
> for that address?

Unfortunately so, yes. I'll run another backtrace on -dealloc, but I also 
created an NSMenuItem subclass for debugging, posed as class so that my 
subclass 
was used instead of NSMenuItem, and set a break point on its dealloc method, 
and 
it was called from the AppKit, all internal Cocoa methods. But I'll do that 
again to double-check, thanks.

> A bit of digging with -instancesRespondToSelector: indicates 
>that -_bindingAdaptor is defined in a private NSObject
> category. So that means that the fact that it's a deallocated NSMenuItem 
> might 
>be a red herring. If something else
> was allocated at that address but prematurely freed, that could be the thing 
>that the offending code is trying to send
> the -_bindingAdaptor message.

I thought that myself, but I don't think this is the case - based on my tests 
it 
does seem to be an NSMenuItem object getting released, based on:

1) I ran with zombies enabled, and every single time it reported that it was an 
NSMenuItem that was having -_bindingAdaptor called on it after release.

2) I set up an NSMenuItem subclass purely for debugging, as I say, and used 
-poseAsClass to replace NSMenuItem with my subclass for my tests. In my 
subclass 
I overrode the -_bindingAdaptor subclass method to NSLog when it was called, 
NSLogging -self and -title of the NSMenuItem, too; I also overrode -dealloc not 
to call super so that it wouldn't be released (and to NSLog -self and -title 
again), so that I could check that it really was this menu item that was having 
-_bindingAdaptor called on it after it had been released. And sure enough, my 
NSLogs revealed that -dealloc was called and then -_bindingAdaptor was called 
on 
the same NSMenuItem after the document opened (and obviously it didn't crash in 
this test case because I had overridden -dealloc to do nothing in my test 
NSMenuItem posed-subclass, again seeming to indicate that it is the menu item 
causing the problems).

So it seems that it is an NSMenuItem from the Open Recent menu that is getting 
called after it is released, unless I have done something stupid along the way 
to create an erroneous result (which of course is possible). And yet it only 
affects my app, so clearly I've done something to cause gremlins somewhere.

> Have you run the clang static analyzer (Build and Analyze) on your
> project? Perhaps you are overreleasing something.

I haven't, so I'll look into doing that next - many thanks for the pointer.

Thanks again for the help, I greatly appreciate it.

All the best,
Keith


      
_______________________________________________

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

Reply via email to