【发布时间】:2011-05-20 19:33:19
【问题描述】:
由于某些原因,用户数量少(比如几百个中的一个),应用程序在 Snow Leopard 10.6.3 上以 64 位模式运行时似乎会崩溃
我已经附加了堆栈跟踪。 在随机位置和随机时刻,com.apple.AppKit 中的崩溃似乎是随机的。 其他人有什么经验吗?
使用 Xcode 3.2.2 的 GCC 编译器
用户崩溃 #1
Code Type: X86-64 (Native)
Parent Process: launchd [90]
Date/Time: 2010-05-02 04:12:59.708 -0500
OS Version: Mac OS X 10.6.3 (10D573)
Report Version: 6
Exception Type: EXC_BAD_INSTRUCTION (SIGILL)
Exception Codes: 0x0000000000000001, 0x0000000000000000
Crashed Thread: 0 Dispatch queue: com.apple.main-thread
Application Specific Information:
objc[232]: alt handlers in objc runtime are buggy!
Thread 0 Crashed: Dispatch queue: com.apple.main-thread
0 libobjc.A.dylib 0x00007fff874dd8b7 _objc_fatal + 238
1 libobjc.A.dylib 0x00007fff874de57c objc_addExceptionHandler + 1026
2 com.apple.CoreFoundation 0x00007fff83914212 _CFDoExceptionOperation + 402
3 com.apple.AppKit 0x00007fff87afc55d _NSAppKitLock + 79
4 com.apple.AppKit 0x00007fff87bd1f93 +[NSColorList _findColorListNamed:forDeviceType:] + 86
5 com.apple.AppKit 0x00007fff87b9d304 -[NSCatalogColor colorUsingColorSpaceName:device:] + 255
6 com.apple.AppKit 0x00007fff87c985ad -[NSLayoutManager(NSPrivate) _drawGlyphsForGlyphRange:atPoint:parameters:] + 4764
7 com.apple.AppKit 0x00007fff87c5d79c -[NSTextView drawRect:] + 1839
8 com.apple.AppKit 0x00007fff87c5ce2e -[NSTextView _drawRect:clip:] + 2343
9 com.apple.AppKit 0x00007fff87be4485 -[NSView _recursiveDisplayAllDirtyWithLockFocus:visRect:] + 1325
10 com.apple.AppKit 0x00007fff87be47ef -[NSView _recursiveDisplayAllDirtyWithLockFocus:visRect:] + 2199
11 com.apple.AppKit 0x00007fff87be2b57 -[NSView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:] + 767
12 com.apple.AppKit 0x00007fff87be3a23 -[NSView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:] + 4555
13 com.apple.AppKit 0x00007fff87be3a23 -[NSView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:] + 4555
14 com.apple.AppKit 0x00007fff87be3a23 -[NSView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:] + 4555
15 com.apple.AppKit 0x00007fff87be3a23 -[NSView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:] + 4555
16 com.apple.AppKit 0x00007fff87be3a23 -[NSView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:] + 4555
17 com.apple.AppKit 0x00007fff87be3a23 -[NSView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:] + 4555
18 com.apple.AppKit 0x00007fff87be3a23 -[NSView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:] + 4555
19 com.apple.AppKit 0x00007fff87be3a23 -[NSView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:] + 4555
20 com.apple.AppKit 0x00007fff87be2678 -[NSThemeFrame _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:] + 254
21 com.apple.AppKit 0x00007fff87bdef27 -[NSView _displayRectIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:] + 2683
22 com.apple.AppKit 0x00007fff87b58777 -[NSView displayIfNeeded] + 969
23 com.apple.AppKit 0x00007fff87b53622 _handleWindowNeedsDisplay + 678
24 com.apple.Foundation 0x00007fff8600fa4d __NSFireTimer + 114
25 com.apple.CoreFoundation 0x00007fff83908708 __CFRunLoopRun + 6488
26 com.apple.CoreFoundation 0x00007fff839068df CFRunLoopRunSpecific + 575
27 com.apple.HIToolbox 0x00007fff821b5ada RunCurrentEventLoopInMode + 333
28 com.apple.HIToolbox 0x00007fff821b58df ReceiveNextEventCommon + 310
29 com.apple.HIToolbox 0x00007fff821b5798 BlockUntilNextEventMatchingListInMode + 59
30 com.apple.AppKit 0x00007fff87b28a2a _DPSNextEvent + 708
31 com.apple.AppKit 0x00007fff87b28379 -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 155
32 com.apple.AppKit 0x00007fff87d37060 -[NSTextView mouseDown:] + 8426
33 com.apple.AppKit 0x00007fff87c21f1b -[NSWindow sendEvent:] + 5409
34 com.apple.AppKit 0x00007fff87b57662 -[NSApplication sendEvent:] + 4719
35 com.apple.AppKit 0x00007fff87aee0aa -[NSApplication run] + 474
36 com.apple.AppKit 0x00007fff87ae6d7c NSApplicationMain + 364
37 com.NZBVortex.NZBVortex 0x0000000100000fe0 start + 52
稍后从同一用户崩溃 #2
Code Type: X86-64 (Native)
Parent Process: launchd [76]
Date/Time: 2010-05-02 11:59:33.226 +0200
OS Version: Mac OS X 10.6.3 (10D573)
Report Version: 6
Exception Type: EXC_BAD_INSTRUCTION (SIGILL)
Exception Codes: 0x0000000000000001, 0x0000000000000000
Crashed Thread: 0 Dispatch queue: com.apple.main-thread
Application Specific Information:
objc[4360]: alt handlers in objc runtime are buggy!
Thread 0 Crashed: Dispatch queue: com.apple.main-thread
0 libobjc.A.dylib 0x00007fff8015d8b7 _objc_fatal + 238
1 libobjc.A.dylib 0x00007fff8015e57c objc_addExceptionHandler + 1026
2 com.apple.CoreFoundation 0x00007fff85367212 _CFDoExceptionOperation + 402
3 com.apple.AppKit 0x00007fff840b5f2f -[NSViewHierarchyLock lockForReadingWithExceptionHandler:] + 478
4 com.apple.AppKit 0x00007fff8420753e -[NSConcreteTextStorage _lockForReading] + 243
5 com.apple.AppKit 0x00007fff841e1449 -[NSLayoutManager(NSPrivate) _fillGlyphHoleForCharacterRange:startGlyphIndex:desiredNumberOfCharacters:] + 320
6 com.apple.AppKit 0x00007fff840e204a _NSFastFillAllGlyphHolesForGlyphRange + 719
7 com.apple.AppKit 0x00007fff841e10e2 _NSFastFillAllLayoutHolesUpToEndOfContainerForGlyphIndex + 653
8 com.apple.AppKit 0x00007fff841e0c72 -[NSLayoutManager textContainerForGlyphAtIndex:effectiveRange:] + 243
9 com.apple.AppKit 0x00007fff840f6786 -[NSLayoutManager glyphRangeForTextContainer:] + 286
10 com.apple.AppKit 0x00007fff846664a9 -[NSToolTipStringDrawingLayoutManager _sizeWithSize:attributedString:] + 883
11 com.apple.AppKit 0x00007fff84665dad +[NSToolTipStringDrawingLayoutManager sizeForDisplayingAttributedString:] + 354
12 com.apple.AppKit 0x00007fff84667292 -[NSToolTipManager displayToolTip:] + 616
13 com.apple.AppKit 0x00007fff846657d4 toolTipTimerFired + 114
14 com.apple.CoreFoundation 0x00007fff8535b708 __CFRunLoopRun + 6488
15 com.apple.CoreFoundation 0x00007fff853598df CFRunLoopRunSpecific + 575
16 com.apple.HIToolbox 0x00007fff88510ada RunCurrentEventLoopInMode + 333
17 com.apple.HIToolbox 0x00007fff885108df ReceiveNextEventCommon + 310
18 com.apple.HIToolbox 0x00007fff88510798 BlockUntilNextEventMatchingListInMode + 59
19 com.apple.AppKit 0x00007fff840d1a2a _DPSNextEvent + 708
20 com.apple.AppKit 0x00007fff840d1379 -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 155
21 com.apple.AppKit 0x00007fff8409705b -[NSApplication run] + 395
22 com.apple.AppKit 0x00007fff8408fd7c NSApplicationMain + 364
23 com.NZBVortex.NZBVortex 0x0000000100000fe0 start + 52
奇怪的是,当这些用户在 32 位模式下运行代码时,崩溃似乎消失了。
崩溃显然是在 32 位模式下触发的,只是在 AppKit 本身内部启动后才触发,就像在 NSThread sleep 的调用堆栈深处一样。
其他一些开发者也看到了同样的情况: http://lists.apple.com/archives/objc-language/2008/Sep/msg00111.html
无法理解为什么以及是否可以获得更多背景信息。
【问题讨论】:
-
永远不要确定这不是你的代码。
-
通常情况下我同意,但情况很清楚,因此在整个地方都是完全随机的,即使在启动期间之前或在 AppKit 点击处理期间用户点击之后没有任何代码运行。查看第一个堆栈跟踪。在没有我的任何代码运行的情况下,在 applaunch 之后崩溃。其他开发人员也有类似的问题(谷歌搜索),他们只是恢复到 32 位。我 99.9% 确定这不是代码问题,只需检查 app lauch 堆栈跟踪即可。
-
可能有点牵强,但你能检查一下这是否可能是由损坏的 plist 文件引起的吗?您可以使用
plutil或 thrash 并重新创建(可能重新启动)检查完整性... -
感谢您的反馈。我已经要求受影响的用户在 32 位模式下运行它(在应用程序上使用 Get Info),它直接运行,到目前为止没有崩溃。疯狂的情况吧?实在想不通。
标签: objective-c cocoa macos 64-bit