Hi,

On 10.6.5 I'm seeing a runaway memory leak in my app when I show a modal 
dialog. I'm not seeing the leak in the same situation on 10.5. The modal loop 
is run using [NSApplication runModalSession:].

Using Instruments to look at allocations I'm seeing that many instances of 
CFArray, NSConcreteNotification and CFRunLoopObserver are being allocated and 
not disposed of. Here some stack crawls:

For CFArray:

  38    58.03 MB     CFArray :0
  37 CoreFoundation   58.03 MB     _CFRuntimeCreateInstance
  36 CoreFoundation   58.03 MB     __CFArrayInit
  35 CoreFoundation   46.43 MB     __CFXNotificationPost
  34 CoreFoundation   46.43 MB     _CFXNotificationPostNotification
  33 Foundation   46.43 MB     -[NSNotificationCenter 
postNotificationName:object:userInfo:]
  32 CoreFoundation   23.21 MB     -[NSArray makeObjectsPerformSelector:]
  31 AppKit   23.21 MB     -[NSApplication(NSWindowCache) 
_updateWindowsUsingCache]
  30 AppKit   23.21 MB     -[NSApplication updateWindows]
  29 AppKit   23.21 MB     _handleWindowsNeedUpdateNote
  28 CoreFoundation   23.21 MB     __CFRunLoopDoObservers
  27 CoreFoundation   23.21 MB     __CFRunLoopRun
  26 CoreFoundation   23.21 MB     CFRunLoopRunSpecific
  25 HIToolbox   23.21 MB     RunCurrentEventLoopInMode
  24 HIToolbox   23.21 MB     ReceiveNextEventCommon
  23 HIToolbox   23.21 MB     BlockUntilNextEventMatchingListInMode
  22 AppKit   23.21 MB     _DPSNextEvent
  21 AppKit   23.21 MB     -[NSApplication 
nextEventMatchingMask:untilDate:inMode:dequeue:]
  20 AppKit   23.21 MB     -[NSApplication _realDoModalLoop:peek:]
  19 AppKit   23.21 MB     -[NSApplication runModalSession:]
  18 tglib   23.21 MB     
UnderC::details::UCMacEventManagerImp::RunModalLoopForDialog(UnderC::UCDialog 
const&)
  17 tglib   23.21 MB     
UnderC::UCEventManager::RunModalLoopForDialog(UnderC::UCDialog const&)

For NSConcreteNotification:

  38    46.43 MB     NSConcreteNotification :0
  37 libSystem.B.dylib   46.43 MB     calloc
  36 libobjc.A.dylib   46.43 MB     _internal_class_createInstanceFromZone
  35 Foundation   46.43 MB     NSAllocateObject
  34 Foundation   46.43 MB     +[NSConcreteNotification 
newTempNotificationWithName:object:userInfo:]
  33 Foundation   46.43 MB     -[NSNotificationCenter 
postNotificationName:object:userInfo:]
  32 CoreFoundation   23.21 MB     -[NSArray makeObjectsPerformSelector:]
  31 AppKit   23.21 MB     -[NSApplication(NSWindowCache) 
_updateWindowsUsingCache]
  30 AppKit   23.21 MB     -[NSApplication updateWindows]
  29 AppKit   23.21 MB     _handleWindowsNeedUpdateNote
  28 CoreFoundation   23.21 MB     __CFRunLoopDoObservers
  27 CoreFoundation   23.21 MB     __CFRunLoopRun
  26 CoreFoundation   23.21 MB     CFRunLoopRunSpecific
  25 HIToolbox   23.21 MB     RunCurrentEventLoopInMode
  24 HIToolbox   23.21 MB     ReceiveNextEventCommon
  23 HIToolbox   23.21 MB     BlockUntilNextEventMatchingListInMode
  22 AppKit   23.21 MB     _DPSNextEvent
  21 AppKit   23.21 MB     -[NSApplication 
nextEventMatchingMask:untilDate:inMode:dequeue:]
  20 AppKit   23.21 MB     -[NSApplication _realDoModalLoop:peek:]
  19 AppKit   23.21 MB     -[NSApplication runModalSession:]
  18 tglib   23.21 MB     
UnderC::details::UCMacEventManagerImp::RunModalLoopForDialog(UnderC::UCDialog 
const&)
  17 tglib   23.21 MB     
UnderC::UCEventManager::RunModalLoopForDialog(UnderC::UCDialog const&)

For CFRunLoopObserver:

  24    27.08 MB     CFRunLoopObserver :0
  23 CoreFoundation   27.08 MB     _CFRuntimeCreateInstance
  22 CoreFoundation   27.08 MB     CFRunLoopObserverCreate
  21 AppKit   27.08 MB     -[NSApplication setWindowsNeedUpdate:]
  20 AppKit   27.08 MB     -[NSApplication _realDoModalLoop:peek:]
  19 AppKit   27.08 MB     -[NSApplication runModalSession:]
  18 tglib   27.08 MB     
UnderC::details::UCMacEventManagerImp::RunModalLoopForDialog(UnderC::UCDialog 
const&)
  17 tglib   27.08 MB     
UnderC::UCEventManager::RunModalLoopForDialog(UnderC::UCDialog const&)

It looks like it's something to do with updating windows. It just keeps 
allocating these objects until after a fairly short time it crashes when it 
runs out of address space. It's growing in 20 MB steps as you watch it.

I have a smaller testbed app for testing my GUI framework and a modal dialog 
shown in the same way doesn't show the same memory leak that doing it in the 
main app does, so it could well be something to do with my code. However has 
any seen this sort of behaviour before and have any pointers as to what might 
be going awry? I'm out of ideas at the moment.

Regards,

Jo Meder 

_______________________________________________

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