7

I'm at my wits end, I'm getting a weird crash that only happens when the app is launched from Notification Center. Either tapping on a local notification (in the notification side) or a call to extensionContext:openURL:completionHandler (from my Today widget) will launch the app with a customURL scheme.

When the app is running (warm boot), no issues, works just as advertised. When I kill the app (in task switcher) and then try to launch it through Notification Center (cold boot), I get the below crash report.

I've search low and high for anything, can't find it. This only happens on iOS8 devices, iOS7 devices has no issue (with the notification launch, obviously no Today widget)

Has anyone seen this??

thanks!

Date/Time:           2014-10-14 18:16:39.924 -0400
Launch Time:         2014-10-14 18:16:38.667 -0400
OS Version:          iOS 8.0.2 (12A405)
Report Version:      105

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Subtype: KERN_INVALID_ADDRESS at 0x000000016a4cbeb8
Triggered by Thread:  0

Thread 0 name:  Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0   libobjc.A.dylib                 0x0000000195ebbbd0 objc_msgSend + 16
1   UIKit                           0x000000018a27d840 -[UIApplication workspaceDidEndTransaction:] + 216
2   FrontBoardServices              0x000000018da7563c __31-[FBSSerialQueue performAsync:]_block_invoke + 24
3   CoreFoundation                  0x000000018582a35c __CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__ + 16
4   CoreFoundation                  0x0000000185829464 __CFRunLoopDoBlocks + 308
5   CoreFoundation                  0x0000000185827a88 __CFRunLoopRun + 1752
6   CoreFoundation                  0x0000000185755660 CFRunLoopRunSpecific + 392
7   UIKit                           0x000000018a05f4fc -[UIApplication _run] + 548
8   UIKit                           0x000000018a05a4f4 UIApplicationMain + 1484
9   therichest                      0x00000001001caa8c main (main.m:16)
10  libdyld.dylib                   0x0000000196516a04 start + 0
4

1 回答 1

7

您的代码或您正在使用的第三方库正在手动旋转运行循环。这导致 -workspaceDidEndTransaction: 被重新调用并在释放后触发使用。如果您在 -[NSRunLoop runMode:beforeDate:] 和 -[NSRunLoop runUntilDate:] 上设置断点,它应该会在前一个堆栈帧上出现有罪代码。

虽然从不推荐手动旋转运行循环,但如果您可以延迟执行此操作,直到您的应用程序完成启动(收到所有启动应用程序委托调用),您应该避免发生此崩溃。

于 2014-11-01T22:52:08.690 回答