10.9.5 生产崩溃与 libdispatch - 如何调试?
10.9.5 production crash with libdispatch - how to debug?
我刚刚向 App Store 发布了一个 OSX 应用程序,但有报告称它在 OSX 10.9.5
上崩溃了
以下是来自用户崩溃报告的相关信息:
Crashed Thread: 0 Dispatch queue: com.apple.main-thread
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x0000000000000050
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 libdispatch.dylib 0x00007fff83955eeb dispatch_async_f + 3
1 de.jakobpenca.sdsdrop 0x00000001048168e0 0x10480e000 + 35040
2 de.jakobpenca.sdsdrop 0x0000000104843c0b 0x10480e000 + 220171
3 libdispatch.dylib 0x00007fff839561bb _dispatch_call_block_and_release + 12
4 libdispatch.dylib 0x00007fff8395328d _dispatch_client_callout + 8
5 libdispatch.dylib 0x00007fff8395aef0 _dispatch_main_queue_callback_4CF + 333
6 com.apple.CoreFoundation 0x00007fff81a164f9 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 9
7 com.apple.CoreFoundation 0x00007fff819d1714 __CFRunLoopRun + 1636
8 com.apple.CoreFoundation 0x00007fff819d0e75 CFRunLoopRunSpecific + 309
9 com.apple.HIToolbox 0x00007fff87e6aa0d RunCurrentEventLoopInMode + 226
10 com.apple.HIToolbox 0x00007fff87e6a7b7 ReceiveNextEventCommon + 479
11 com.apple.HIToolbox 0x00007fff87e6a5bc _BlockUntilNextEventMatchingListInModeWithFilter + 65
12 com.apple.AppKit 0x00007fff84d1c24e _DPSNextEvent + 1434
13 com.apple.AppKit 0x00007fff84d1b89b -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 122
14 com.apple.AppKit 0x00007fff84d0f99c -[NSApplication run] + 553
15 com.apple.AppKit 0x00007fff84cfa783 NSApplicationMain + 940
16 libdyld.dylib 0x00007fff8ce8b5fd start + 1
Thread 0 crashed with X86 Thread State (64-bit):
rax: 0x00006080002781c0 rbx: 0x000060800024bc40 rcx: 0xffff9f7fffdb4301 rdx: 0x00007fff839561af
rdi: 0x0000000000000000 rsi: 0x00006080002781c0 rbp: 0x00007fff5b3f0420 rsp: 0x00007fff5b3f0398
r8: 0x00000000000000ff r9: 0xffff9f7fffdb43bf r10: 0x00007f8cbb039fa0 r11: 0x00007fff71218628
r12: 0x0000000000000000 r13: 0x00007fff8cf5c0d0 r14: 0x00007fff8cf59080 r15: 0x000060800024bc40
rip: 0x00007fff83955eeb rfl: 0x0000000000010206 cr2: 0x0000000000000050
我无法访问 Mavericks 机器,无法从该报告中提取有意义的信息。
这看起来像是 libdispatch 中不受支持的 API 用法吗?或者这只是意味着崩溃发生在调度块内的某个地方?
我确实在崩溃时使用 dispatch_async()。
该应用基于 OSX 10.11.3 构建,部署目标为 Xcode 7.2、最新 SDK、10.9。我可以扫描我的代码以获得不受支持的 API 用法吗?
I don't have access to a Mavericks machine
和
[The app was released with] 10.9 as deployment target
对于您希望支持的 OS X 的每个版本,您不需要物理机器(或引导驱动器)。
立即获取 VMWare/Parallels/Virtual Box 的副本;构建两台虚拟机,一台 Mavericks 和一台 Yosemite;并在两者上测试您的应用。
我刚刚向 App Store 发布了一个 OSX 应用程序,但有报告称它在 OSX 10.9.5
上崩溃了以下是来自用户崩溃报告的相关信息:
Crashed Thread: 0 Dispatch queue: com.apple.main-thread
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x0000000000000050
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 libdispatch.dylib 0x00007fff83955eeb dispatch_async_f + 3
1 de.jakobpenca.sdsdrop 0x00000001048168e0 0x10480e000 + 35040
2 de.jakobpenca.sdsdrop 0x0000000104843c0b 0x10480e000 + 220171
3 libdispatch.dylib 0x00007fff839561bb _dispatch_call_block_and_release + 12
4 libdispatch.dylib 0x00007fff8395328d _dispatch_client_callout + 8
5 libdispatch.dylib 0x00007fff8395aef0 _dispatch_main_queue_callback_4CF + 333
6 com.apple.CoreFoundation 0x00007fff81a164f9 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 9
7 com.apple.CoreFoundation 0x00007fff819d1714 __CFRunLoopRun + 1636
8 com.apple.CoreFoundation 0x00007fff819d0e75 CFRunLoopRunSpecific + 309
9 com.apple.HIToolbox 0x00007fff87e6aa0d RunCurrentEventLoopInMode + 226
10 com.apple.HIToolbox 0x00007fff87e6a7b7 ReceiveNextEventCommon + 479
11 com.apple.HIToolbox 0x00007fff87e6a5bc _BlockUntilNextEventMatchingListInModeWithFilter + 65
12 com.apple.AppKit 0x00007fff84d1c24e _DPSNextEvent + 1434
13 com.apple.AppKit 0x00007fff84d1b89b -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 122
14 com.apple.AppKit 0x00007fff84d0f99c -[NSApplication run] + 553
15 com.apple.AppKit 0x00007fff84cfa783 NSApplicationMain + 940
16 libdyld.dylib 0x00007fff8ce8b5fd start + 1
Thread 0 crashed with X86 Thread State (64-bit):
rax: 0x00006080002781c0 rbx: 0x000060800024bc40 rcx: 0xffff9f7fffdb4301 rdx: 0x00007fff839561af
rdi: 0x0000000000000000 rsi: 0x00006080002781c0 rbp: 0x00007fff5b3f0420 rsp: 0x00007fff5b3f0398
r8: 0x00000000000000ff r9: 0xffff9f7fffdb43bf r10: 0x00007f8cbb039fa0 r11: 0x00007fff71218628
r12: 0x0000000000000000 r13: 0x00007fff8cf5c0d0 r14: 0x00007fff8cf59080 r15: 0x000060800024bc40
rip: 0x00007fff83955eeb rfl: 0x0000000000010206 cr2: 0x0000000000000050
我无法访问 Mavericks 机器,无法从该报告中提取有意义的信息。
这看起来像是 libdispatch 中不受支持的 API 用法吗?或者这只是意味着崩溃发生在调度块内的某个地方?
我确实在崩溃时使用 dispatch_async()。
该应用基于 OSX 10.11.3 构建,部署目标为 Xcode 7.2、最新 SDK、10.9。我可以扫描我的代码以获得不受支持的 API 用法吗?
I don't have access to a Mavericks machine
和
[The app was released with] 10.9 as deployment target
对于您希望支持的 OS X 的每个版本,您不需要物理机器(或引导驱动器)。
立即获取 VMWare/Parallels/Virtual Box 的副本;构建两台虚拟机,一台 Mavericks 和一台 Yosemite;并在两者上测试您的应用。