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;并在两者上测试您的应用。