• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
over-released NSIdEnumerator
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

over-released NSIdEnumerator


  • Subject: over-released NSIdEnumerator
  • From: Jeffrey Oleander <email@hidden>
  • Date: Mon, 13 Sep 2010 20:34:48 -0700 (PDT)

After my main NSDocument algorithm method was done doing its thing and returned up the call chain to where the button click had started its action, it would flip to showing NSPopAutoreleasePool and I was crashing with EXC_BAD_ACCESS.  So, I looked at all of my alloc, initWith..., retain, and releases.  I did find a couple things which I should have been releasing, but had not, but no obvious ones I had been releasing that I should not have been.

So, I looked in the archives and on the web and fired up some of the tools, one by one: MallocDebug, ObjectAlloc (and tried malloc_history with no luck at all).  I got these:

from NSLog and the run log/Debugger Console:
2010-09-13 21:11:40.899 DijkstraCocoa[411] MyDocument findRelationship:      ---display predecessors---
(gdb) continue
2010-09-13 21:11:46.345 DijkstraCocoa[411] displayResults: resultsField=<NSTableView: 0x549e50>
2010-09-13 21:11:46.346 DijkstraCocoa[411] displayResults: superView=<NSClipView: 0x549ca0>, superSuperView=<NSScrollView: 0x5499c0> window=<NSWindow: 0x54ca00>
(gdb) continue
2010-09-13 21:11:48.638 DijkstraCocoa[411] MyDocument findRelationship:  --- DONE ---
Program received signal:  "EXC_BAD_ACCESS".
(gdb)

0 objc_msgSend
1 NSPopAutoreleasePool
2 -[NSApplication run]
3 NSApplicationMain
4 main

0 objc_msgSend
0x908611e4  <+0004>  beq-	0x90861308 <objc_msgSend+296>
0x908611e8  <+0008>  lwz	r12,0(r3)
0x908611ec  <+0012>  lwz	r12,32(r12)
0x908611f0  <+0016>  stw	r9,48(r1)
0x908611f4  <+0020>  lwz	r11,0(r12)
0x908611f8  <+0024>  addi	r9,r12,8
0x908611fc  <+0028>  rlwinm	r11,r11,2,0,29
0x90861200  <+0032>  and	r12,r4,r11
0x90861204  <+0036>  lwzx	r2,r9,r12
0x90861208  <+0040>  addi	r12,r12,4
0x9086120c  <+0044>  cmplwi	r2,0
0x90861210  <+0048>  beq-	0x90861234 <objc_msgSend+84>

1 NSPopAutoreleasePool
0x90a21da8  <+0336>  beq+	cr7,0x90a21dbc <NSPopAutoreleasePool+356>
0x90a21dac  <+0340>  addis	r4,r31,4097
0x90a21db0  <+0344>  mr	r3,r29
0x90a21db4  <+0348>  lwz	r4,-3720(r4)
0x90a21db8  <+0352>  bl	0x90b47aa8 <dyld_stub_objc_msgSend>
0x90a21dbc  <+0356>  lwz	r2,8(r30)
0x90a21dc0  <+0360>  addi	r27,r27,1
0x90a21dc4  <+0364>  cmplw	cr7,r28,r2
0x90a21dc8  <+0368>  blt+	cr7,0x90a21d64 <NSPopAutoreleasePool+268>

2 -[NSApplication run]
0x9730407c  <+0592>  bl	0x976f8028 <dyld_stub_objc_msgSend>
0x97304080  <+0596>  lwz	r3,864(r1)
0x97304084  <+0600>  addis	r4,r31,4095
0x97304088  <+0604>  lwz	r4,6316(r4)
0x9730408c  <+0608>  bl	0x976f8028 <dyld_stub_objc_msgSend>
0x97304090  <+0612>  lwz	r2,1320(r1)
0x97304094  <+0616>  lha	r0,50(r2)
0x97304098  <+0620>  cmpwi	cr7,r0,0
0x9730409c  <+0624>  bne+	cr7,0x97303fe4 <-[NSApplication run]+440>
0x973040a0  <+0628>  addi	r3,r1,80
0x973040a4  <+0632>  bl	0x976f8208 <dyld_stub__NSRemoveHandler2>
0x973040a8  <+0636>  b	0x97304130 <-[NSApplication run]+772>

3 NSApplicationMain
0x973c0750  <+0444>  bl	0x976fbb68 <dyld_stub_ptrace>
0x973c0754  <+0448>  lwz	r3,0(r30)
0x973c0758  <+0452>  addis	r4,r31,4083
0x973c075c  <+0456>  lwz	r4,24824(r4)
0x973c0760  <+0460>  bl	0x976f8028 <dyld_stub_objc_msgSend>
0x973c0764  <+0464>  li	r3,0
0x973c0768  <+0468>  ori	r3,r3,41471
0x973c076c  <+0472>  li	r4,0
0x973c0770  <+0476>  li	r5,0
0x973c0774  <+0480>  li	r6,0
0x973c0778  <+0484>  bl	0x976fbb68 <dyld_stub_ptrace>

4 main
#import <Cocoa/Cocoa.h>

int main(int argc, char *argv[])
{
    return NSApplicationMain(argc, (const char **) argv);
}


MallocDebug says:
/Users/giovanni/Projects/DijkstraCocoa/build/DijkstraCocoa.app/Contents/MacOS/DijkstraCocoa accessed memory at 0x55555575 illegally. It probably tried to dereference a pointer in freed memory.

The most interesting thing ObjAlloc were some tiny objects containing only an unsigned long long, which I allocate to stuff in a set, the sole purpose of which is as a quick test for the status of a node of my graph (not yet examined, examined and now in the priority queue, visited and removed from the priority queue).  (Come to think of it, there may be a better way.)  Anyway, it was the only kind of object that jumped out at me has having any irregularity, so I looked at them quite closely, before NSZombies told me it was worried about an enumerator.

NSZombies says:
2010-09-13 22:47:33.575 DijkstraCocoa[511] *** *** Selector 'release' sent to dealloced instance 0x593180 of class NSIdEnumerator.
Break at '-[_NSZombie release]' to debug.
2010-09-13 22:47:33.575 DijkstraCocoa[511] *** -[NSAutoreleasePool dealloc]: Exception ignored while releasing an object in an autorelease pool: NSGenericException *** Selector 'release' sent to dealloced instance 0x593180 of class NSIdEnumerator.
Break at '-[_NSZombie release]' to debug.

0x90adb928  <+0000>  mr	r5,r3
0x90adb92c  <+0004>  mr	r3,r4
0x90adb930  <+0008>  b	0x90adb580 <logMessageAndRaise>

0 -[_NSZombie release]
1 NSPopAutoreleasePool
2 _NSAppleEventManagerGenericHandler
3 aeDispatchAppleEvent(AEDesc const*, A...
4 dispatchEventAndSendReply(AEDesc cor...
5 aeProcessAppleEvent
6 AEProcessAppleEvent
7 _DPSNextEvent
8 -[NSApplication nextEventMatchingMask:untilDate:i...
9 -[NSApplication run]
10 NSApplicationMain
11 main

0 -[_NSZombie release]
1 NSPopAutoreleasePool
2 -[NSApplication run]
3 NSApplicationMain
4 main

What I'm wondering is how do I go about tracking down which enumerator is causing the problems?  I'm not explicitly using autorelease pools of my own.



_______________________________________________

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

  • Follow-Ups:
    • Re: over-released NSIdEnumerator
      • From: Nick Zitzmann <email@hidden>
    • Re: over-released NSIdEnumerator
      • From: Quincey Morris <email@hidden>
  • Prev by Date: Re: iOS Popup Menus?
  • Next by Date: Re: Unix Signals Delivered from Quitting Cocoa Apps?
  • Previous by thread: Re: iOS Popup Menus?
  • Next by thread: Re: over-released NSIdEnumerator
  • Index(es):
    • Date
    • Thread