I use QL API in my application to preview all kind of files (the application is actually a kind of file browser). Before going into real problems, I just want to say I'm just using simple QLPreviewPanel, no hacks or tweaks of any kind. Also, I'm not using any private or non-documented APIs. I also implemented an object that implements QLPreviewPanelController protocol, which also serves as panels delegate and data source, so is also implements all required methods an object implementing QLPreviewPanelDelegate and QLPreviewPanelDataSource protocols (I can send code showing implementation of this object, if necessary). However, users report quite some crashes, which involve QLPreviewPanelController. There are three types of crashes, so I'll post them all here. This is the first type of crashes: Crashed Thread: 0 Dispatch queue: com.apple.main-thread
Exception Type: EXC_CRASH (SIGABRT) Exception Codes: 0x0000000000000000, 0x0000000000000000 Application Specific Information: objc[345]: garbage collection is OFF abort() called Assertion failure in -[QLPreviewPanelController _updatePanelFrame:animate:] (line 586): unreachable code Application Specific Signatures: [QL] -[QLPreviewPanelController _updatePanelFrame:animate:]: unreachable code Thread 0 Crashed:: Dispatch queue: com.apple.main-thread 0 libsystem_kernel.dylib 0x00007fff8dcfdce2 __pthread_kill + 10 1 libsystem_c.dylib 0x00007fff9477a7d2 pthread_kill + 95 2 libsystem_c.dylib 0x00007fff9476ba7a abort + 143 3 com.apple.QuickLookFramework 0x00007fff97e5d745 _QLCrash + 175 4 com.apple.QuickLookFramework 0x00007fff97e5d82b _QLRaiseAssert + 230 5 com.apple.QuickLookUIFramework 0x00007fff90097ec8 -[QLPreviewPanelController _updatePanelFrame:animate:] + 444 6 com.apple.QuickLookUIFramework 0x00007fff9008e9be -[QLPreviewPanelController previewView:didShowDisplayable:] + 353 7 com.apple.QuickLookUIFramework 0x00007fff900b1584 -[QLPreviewView _setDisplayable:transition:] + 2236 8 com.apple.QuickLookUIFramework 0x00007fff900b17a0 -[QLPreviewView _updateDisplayableWithTransition:] + 289 9 com.apple.QuickLookUIFramework 0x00007fff900b1f19 -[QLPreviewView _setDisplayedDocument:transition:] + 563 10 com.apple.QuickLookUIFramework 0x00007fff900b3378 -[QLPreviewView _timedOut] + 339 11 com.apple.Foundation 0x00007fff9263d1aa __NSFireDelayedPerform + 392 12 com.apple.CoreFoundation 0x00007fff91102c24 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 20 13 com.apple.CoreFoundation 0x00007fff91102776 __CFRunLoopDoTimer + 534 14 com.apple.CoreFoundation 0x00007fff910e3001 __CFRunLoopRun + 1617 15 com.apple.CoreFoundation 0x00007fff910e2676 CFRunLoopRunSpecific + 230 16 com.apple.HIToolbox 0x00007fff9329c31f RunCurrentEventLoopInMode + 277 17 com.apple.HIToolbox 0x00007fff932a35c9 ReceiveNextEventCommon + 355 18 com.apple.HIToolbox 0x00007fff932a3456 BlockUntilNextEventMatchingListInMode + 62 19 com.apple.AppKit 0x00007fff8c98cf5d _DPSNextEvent + 659 20 com.apple.AppKit 0x00007fff8c98c861 -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 135 21 com.apple.AppKit 0x00007fff8c98919d -[NSApplication run] + 470 22 com.apple.AppKit 0x00007fff8cc07b88 NSApplicationMain + 867 23 com.cocoatech.PathFinder 0x000000010000e764 0x100000000 + 59236 The stack trace is not always the same, but it always ends with the following calls: 0 libsystem_kernel.dylib 0x00007fff8dcfdce2 __pthread_kill + 10 1 libsystem_c.dylib 0x00007fff9477a7d2 pthread_kill + 95 2 libsystem_c.dylib 0x00007fff9476ba7a abort + 143 3 com.apple.QuickLookFramework 0x00007fff97e5d745 _QLCrash + 175 4 com.apple.QuickLookFramework 0x00007fff97e5d82b _QLRaiseAssert + 230 5 com.apple.QuickLookUIFramework 0x00007fff90097ec8 -[QLPreviewPanelController _updatePanelFrame:animate:] + 444 Is this a bug in QuickLook framework (unreachable code), or am I doing something wrong here? If it's my fault, any hint on what I'm doing wrong is highly appreciated. This is the second type of crashes: Crashed Thread: 0 Dispatch queue: com.apple.main-thread Exception Type: EXC_CRASH (SIGABRT) Exception Codes: 0x0000000000000000, 0x0000000000000000 Application Specific Information: objc[193]: garbage collection is OFF abort() called Assertion failure in -[QLPreviewCacheManager cacheRecentDocument:] (line 161): document.displayBundle.visibility == QLPreviewHiddenVisibilityState Application Specific Signatures: [QL] -[QLPreviewCacheManager cacheRecentDocument:]: document.displayBundle.visibility == QLPreviewHiddenVisibilityState Thread 0 Crashed:: Dispatch queue: com.apple.main-thread 0 libsystem_kernel.dylib 0x00007fff8784ace2 __pthread_kill + 10 1 libsystem_c.dylib 0x00007fff8e1157d2 pthread_kill + 95 2 libsystem_c.dylib 0x00007fff8e106a7a abort + 143 3 com.apple.QuickLookFramework 0x00007fff87c57745 _QLCrash + 175 4 com.apple.QuickLookFramework 0x00007fff87c5782b _QLRaiseAssert + 230 5 com.apple.QuickLookUIFramework 0x00007fff869a8ee8 -[QLPreviewCacheManager cacheRecentDocument:] + 615 6 com.apple.QuickLookUIFramework 0x00007fff86936897 -[QLPreviewView _recycleDocument:restore:] + 229 7 com.apple.QuickLookUIFramework 0x00007fff86936f4d -[QLPreviewView _setDisplayedDocument:transition:] + 615 8 com.apple.QuickLookUIFramework 0x00007fff86937127 -[QLPreviewView _setDocument:canDelayDisplay:] + 286 9 com.apple.QuickLookUIFramework 0x00007fff86938d50 -[QLPreviewView _startLoadingPreviewItem:timeoutDate:] + 1341 10 com.apple.QuickLookUIFramework 0x00007fff8691a499 -[QLPreviewPanelController _setCurrentPreviewItem:withTransition:blocking:] + 354 11 com.apple.QuickLookUIFramework 0x00007fff8691a11e -[QLPreviewPanelController _flushCurrentDisplayBundle] + 169 12 com.apple.QuickLookUIFramework 0x00007fff86954f1a -[QLPathWatcher _watcherDidWatchURL:flags:] + 1064 13 com.apple.QuickLookUIFramework 0x00007fff8695489a __-[QLPathWatcher _signalEventsForURL:flags:]_block_invoke_1 + 84 14 com.apple.CoreFoundation 0x00007fff8748975d -[NSObject performSelector:withObject:] + 61 15 com.apple.Foundation 0x00007fff8cc3dd94 __NSThreadPerformPerform + 214 16 com.apple.CoreFoundation 0x00007fff874086e1 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17 17 com.apple.CoreFoundation 0x00007fff87407f4d __CFRunLoopDoSources0 + 253 18 com.apple.CoreFoundation 0x00007fff8742ed39 __CFRunLoopRun + 905 19 com.apple.CoreFoundation 0x00007fff8742e676 CFRunLoopRunSpecific + 230 20 com.apple.HIToolbox 0x00007fff8648831f RunCurrentEventLoopInMode + 277 21 com.apple.HIToolbox 0x00007fff8648f5c9 ReceiveNextEventCommon + 355 22 com.apple.HIToolbox 0x00007fff8648f456 BlockUntilNextEventMatchingListInMode + 62 23 com.apple.AppKit 0x00007fff90d88f5d _DPSNextEvent + 659 24 com.apple.AppKit 0x00007fff90d88861 -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 135 25 com.apple.AppKit 0x00007fff90d8519d -[NSApplication run] + 470 26 com.apple.AppKit 0x00007fff91003b88 NSApplicationMain + 867 27 com.cocoatech.PathFinder 0x000000010000e764 0x100000000 + 59236 They all look pretty much the same. Again the same questions: a bug in the QuickLook framework, or my fault. Finally, the third type of crashes: Exception Type: EXC_CRASH (SIGILL) Exception Codes: 0x0000000000000000, 0x0000000000000000 Crashed Thread: 0 Dispatch queue: com.apple.main-thread Thread 0 Crashed: Dispatch queue: com.apple.main-thread 0 libSystem.B.dylib 0x00007fffffe00277 __spin_lock + 23 1 com.apple.Foundation 0x000000010102a53a -[NSNotificationCenter addObserver:selector:name:object:] + 158 2 com.cocoatech.PathFinder 0x0000000100058447 0x100000000 + 361543 3 com.cocoatech.PathFinder 0x0000000100056914 0x100000000 + 354580 4 com.cocoatech.PathFinder 0x00000001001170c2 0x100000000 + 1142978 5 com.cocoatech.PathFinder 0x0000000100116ffa 0x100000000 + 1142778 6 com.apple.QuickLookUIFramework 0x000000010a0a8c53 -[QLPreviewPanelController hasMultipleItems] + 16 7 com.apple.QuickLookUIFramework 0x000000010a0b3e84 -[QLPreviewControlsController layoutControls] + 1041 8 com.apple.QuickLookUIFramework 0x000000010a0aca5f -[QLPreviewPanelController _refreshLayoutAndContent] + 388 9 com.apple.QuickLookUIFramework 0x000000010a0ac894 -[QLPreviewPanelController _doReloadDataIfNecessary] + 297 10 com.apple.Foundation 0x000000010104b33c __NSFireDelayedPerform + 404 11 com.apple.CoreFoundation 0x0000000101bfebe8 __CFRunLoopRun + 6488 12 com.apple.CoreFoundation 0x0000000101bfcdbf CFRunLoopRunSpecific + 575 13 com.apple.HIToolbox 0x00000001037eb7ee RunCurrentEventLoopInMode + 333 14 com.apple.HIToolbox 0x00000001037eb5f3 ReceiveNextEventCommon + 310 15 com.apple.HIToolbox 0x00000001037eb4ac BlockUntilNextEventMatchingListInMode + 59 16 com.apple.AppKit 0x0000000102525eb2 _DPSNextEvent + 708 17 com.apple.AppKit 0x0000000102525801 -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 155 18 com.apple.AppKit 0x00000001024eb68f -[NSApplication run] + 395 19 com.apple.AppKit 0x00000001024e43b0 NSApplicationMain + 364 20 com.cocoatech.PathFinder 0x000000010000e764 0x100000000 + 59236 Again, they all look the same, only sometimes there is something like: 7 com.apple.QuickLookUIFramework 0x000000010a0ab3fe -[QLPreviewPanelController shouldShowControlWithID:] + 130 between: 6 com.apple.QuickLookUIFramework 0x000000010a0a8c53 -[QLPreviewPanelController hasMultipleItems] + 16 7 com.apple.QuickLookUIFramework 0x000000010a0b3e84 -[QLPreviewControlsController layoutControls] + 1041 This seems like my fault at first sight, like I'm doing something wrong in delegate of data source methods, but I don't use NSNotificationCenter in any of them. Any help is appreciated. -- Dragan _______________________________________________ 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