问题

我收到来自如下用户的崩溃报告:

Code Type:       X86-64 (Native)
Parent Process:  launchd [223]

Date/Time:       2012-03-22 11:28:33.087 +0800
OS Version:      Mac OS X 10.7.3 (11D50)
Report Version:  9

Crashed Thread:  0  Dispatch queue: com.apple.main-thread

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: 0x000000000000000d, 0x0000000000000000

VM Regions Near 0:
-->
    __TEXT                 000000010c202000-000000010c29c000 [  616K] r-x/rwx SM=COW      /Applications/CodeKit.app/Contents/MacOS/CodeKit

Application Specific Information:
objc_msgSend() selector name: release
objc[22113]: garbage collection is OFF

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   libobjc.A.dylib                 0x00007fff904f5390 objc_msgSend_vtable14 + 16
1   com.apple.Foundation            0x00007fff8f664137 empty + 61
2   com.apple.Foundation            0x00007fff8f666c10 dealloc + 24
3   com.apple.Foundation            0x00007fff8f666bd1 -[NSConcreteMapTable dealloc] + 64
4   com.apple.AppKit                0x00007fff892bc52c -[_NSDisplayOperation dealloc] + 84
5   com.apple.CoreFoundation        0x00007fff8fdc7ca0 CFRelease + 176
6   com.apple.CoreFoundation        0x00007fff8fdf0742 -[__NSArrayM removeObjectAtIndex:]     + 434
7   com.apple.AppKit                0x00007fff892bc408 -[_NSDisplayOperationStack     exitDisplayOperationForWindow:] + 417
8   com.apple.AppKit                0x00007fff892be2fc -[NSView _displayRectIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:] + 7136
9   com.apple.AppKit                0x00007fff892b6429 -[NSView displayIfNeeded] + 1676
10  [SEE DISCUSSION BELOW]

讨论区

第10行及以下行在报告之间差异很大(因此与崩溃无关)。但是,从第1行到第9行的顺序始终相同。每次崩溃都包含此确切顺序。我已经在“_NSDisplayOperationStack”上进行了搜索,并且发现了许多应用程序(包括著名的应用程序,例如Omni应用程序和Apple的Motion)的类似崩溃报告。

我需要的

由于崩溃是来自Core Foundation的,所以我不知道从哪里开始寻找问题。它似乎深藏在可可的私有(private)绘画工具中。更糟糕的是,我根本无法在计算机上复制崩溃,因此无法使用Instruments进行跟踪。但是我已经收到了很多有关上述模式的报告,所以我知道这是一个问题。更糟糕的是,用户甚至无法可靠地重现崩溃-这是完全断断续续的。

我希望上面的序列对某人看起来很熟悉,他们可以为我提供从哪里开始寻找问题的指导。谢谢。

最佳答案

我在Apple Developer论坛上发布了相同的问题,一位工程师告诉我,堆栈跟踪看起来与并发 View 绘图有关,该功能是10.6中引入的。

我浏览了我所有的NIB文件,发现有两个NSButton实例被设置为可同时绘制---这不是故意的;我一定有偶然地选中了该框。

我为他们两个禁用了并发绘图,并且此崩溃神奇地消失了。

10-01 23:41
查看更多