Hi. This is Objective-C, NSDocument based (CoreData document) based application, running long time in production, that suddenly started crashing for me.
I have a main window (naster/detail) presents a relatively large database. Each line when double-clicked, opens a secondary window to show another table of data - related to the selection in the main window. e.g. ID Location Researcher Type Observations 1045 A Sara PhytoPlankton 30 1046 B Merav PhytoPlankton 223 1047 A Diti PhytoPlankton 3219 1056 D Diti PhytoPlankton 2890 Double clicking the line with ID 1045 or 1046, will open a table showing 30/223 “observations” - OK. However, double-clicking lines 1047 or 1056 - will hang a little - then crash with “Bad Access” which I strongly suspect to be something else. My stack trace at the crash is HUGE (about 48300 depth!) It starts reasonably like this: #48271 0x00007fff38f40064 in -[NSController _notifyObserversForKeyPath:change:] () #48272 0x00007fff38f8b47c in -[NSArrayController didChangeValuesForArrangedKeys:objectKeys:indexKeys:] () #48273 0x00007fff38f8cf3f in -[NSArrayController setContent:] () #48274 0x00007fff38f8c93e in -[NSArrayDetailBinder _refreshDetailContentInBackground:] () #48275 0x00007fff38ddc8db in -[NSObject(NSKeyValueBindingCreation) bind:toObject:withKeyPath:options:] () #48276 0x00007fff38d58719 in -[NSIBObjectData nibInstantiateWithOwner:options:topLevelObjects:] () #48277 0x00007fff38d4f991 in loadNib () #48278 0x00007fff38d4eeb5 in +[NSBundle(NSNibLoading) _loadNibFile:nameTable:options:withZone:ownerBundle:] () #48279 0x00007fff38f84aba in +[NSBundle(NSNibLoadingInternal) _loadNibFile:externalNameTable:options:withZone:] () #48280 0x00007fff38f84893 in -[NSWindowController loadWindow] () #48281 0x00007fff38d97cf5 in -[NSWindowController window] () #48282 0x000000010002bdb7 in -[PMXDocumentWindowController showMeasurements:] at /Users/motti/Client Projects/IOLR/PlanktoMetrix II (Cocoa)/planktometrix-ii/PlanktoMetrix-II/PlanktoMetrix-II/PMXDocumentWindowController.m:867 #48283 0x00007fff39520a43 in -[NSApplication(NSResponder) sendAction:to:from:] () #48284 0x00007fff38fc653f in -[NSControl sendAction:to:] () #48285 0x00007fff3903a069 in -[NSTableView _sendAction:to:row:column:] () #48286 0x00007fff390384a8 in -[NSTableView mouseDown:] () #48287 0x00007fff396bfd6d in -[NSWindow(NSEventRouting) _handleMouseDownEvent:isDelayedEvent:] () #48288 0x00007fff396bc9c4 in -[NSWindow(NSEventRouting) _reallySendEvent:isDelayedEvent:] () #48289 0x00007fff396bbc70 in -[NSWindow(NSEventRouting) sendEvent:] () #48290 0x00007fff3951d236 in -[NSApplication(NSEvent) sendEvent:] () #48291 0x00007fff38d7d8b5 in -[NSApplication run] () #48292 0x00007fff38d4ca72 in NSApplicationMain () #48293 0x0000000100001a72 in main at /Users/motti/Client Projects/IOLR/PlanktoMetrix II (Cocoa)/planktometrix-ii/PlanktoMetrix-II/PlanktoMetrix-II/main.m:13 #48294 0x00007fff63711015 in start () #48295 0x00007fff63711015 in start () But then continues with an infinite nesting of cocoa-binding related ‘blocks’, that in the end - (topmost calls) crash on NSSQLitConnection connect call - like this: #0 0x00007fff3b342a8d in -[NSSQLiteConnection connect] () #1 0x00007fff3b525c97 in -[NSSQLStoreRequestContext executeRequestUsingConnection:] () #2 0x00007fff3b534f5b in __52-[NSSQLDefaultConnectionManager handleStoreRequest:]_block_invoke () #3 0x00000001004e9d8f in _dispatch_client_callout () #4 0x00000001004fe8bf in _dispatch_queue_barrier_sync_invoke_and_complete () #5 0x00007fff3b534e44 in -[NSSQLDefaultConnectionManager handleStoreRequest:] () #6 0x00007fff3b4755e1 in -[NSSQLCoreDispatchManager routeStoreRequest:] () #7 0x00007fff3b43ce55 in -[NSSQLCore dispatchRequest:withRetries:] () #8 0x00007fff3b3669be in -[NSSQLCore newValuesForObjectWithID:withContext:error:] () #9 0x00007fff3b41a4c4 in __95-[NSPersistentStoreCoordinator(_NSInternalMethods) newValuesForObjectWithID:withContext:error:]_block_invoke () #10 0x00007fff3b40e9e7 in -[NSPersistentStoreCoordinator _routeLightweightBlock:toStore:] () #11 0x00007fff3b3667ae in -[NSPersistentStoreCoordinator(_NSInternalMethods) newValuesForObjectWithID:withContext:error:] () #12 0x00007fff3b3c99fd in __92-[NSManagedObjectContext(_NestedContextSupport) newValuesForObjectWithID:withContext:error:]_block_invoke () #13 0x00007fff3b38ee62 in internalBlockToNSManagedObjectContextPerform () #14 0x00000001004e9d8f in _dispatch_client_callout () #15 0x00000001004fe8bf in _dispatch_queue_barrier_sync_invoke_and_complete () #16 0x00007fff3b38ed6c in _perform () #17 0x00007fff3b38f988 in -[NSManagedObjectContext(_NestedContextSupport) newValuesForObjectWithID:withContext:error:] () #18 0x00007fff3b365eb2 in _PFFaultHandlerLookupRow () #19 0x00007fff3b365700 in _PF_FulfillDeferredFault () #20 0x00007fff3b365517 in _pvfk_header () #21 0x00007fff3b365485 in _sharedIMPL_pvfk_core () #22 0x00007fff3b396cdd in _PF_Handler_Public_GetProperty () #23 0x00007fff3da38636 in -[NSArray(NSKeyValueCoding) _unionOfObjectsForKeyPath:] () #24 0x00007fff3da3880d in -[NSArray(NSKeyValueCoding) _distinctUnionOfObjectsForKeyPath:] () #25 0x00007fff3d90ad3f in -[NSArray(NSKeyValueCoding) valueForKeyPath:] () #26 0x00007fff3d90ab7d in -[NSObject(NSKeyValueCoding) valueForKeyPath:] () #27 0x00007fff38de44ab in -[NSBinder valueForBinding:resolveMarkersToPlaceholders:] () #28 0x00007fff38f8c639 in -[NSArrayDetailBinder _refreshDetailContentInBackground:] () #29 0x00007fff3d9069c9 in NSKeyValueNotifyObserver () Obviously, there is something chaining far-too-many objects here - and I would never guess that normal NSTableColumn bindings are all done nested… still this app runs OK with the same database for customers, and It didn’t crash there before. I wouldn’t even think NSTable should attempt to load ALL the lines despite the fact that only few of them appear in the window initially. Since EVERYTHING in the stack (except for #48282 which is my action to open that window) trace (except #48282 which is my action to open that window) is Cocoa SDK code - I don’t know where to start looking for the culprit. I suspect also, that if I could “untie” something here - my app will also enjoy better responsiveness. The window I’m trying to present has a single, cell-based NSTable, with 10 columns, each bound to the same CoreData entity via ArrayController. There are also 2 custom views in that window’s nib - used within NSAlert dialogs if user elects to use those. Most of the bindings are naive and simple - one column is showing a popup-button whose bindings are little more complicated - but that’s it. Can anyone suggest a way to start bisecting the issue or an idea where to look for? Many thanks. Motti. _______________________________________________ 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