Проблема
Я получаю отчеты о сбоях от пользователей, которые выглядят так:
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's Motion.)
Что мне нужно
Поскольку сбой происходит от Core Foundation, я понятия не имею, с чего начать поиск проблемы. Похоже, что это глубоко в частном механизме рисования какао. Что еще хуже, я не могу воспроизвести сбой на моей машине, поэтому я не могу отследить его с помощью инструментов. Но я получил много отчетов по приведенной выше схеме, поэтому я знаю, что это проблема. Хуже того, пользователи даже не могут надежно воспроизвести аварию - она полностью прерывистая.
Я надеюсь, что приведенная выше последовательность кому-то покажется знакомой, и они могут дать мне указания о том, с чего начать поиск проблемы. Спасибо.