iOS Today Extension 中奇怪的 NSInternalInconsistencyException 和 PKService 崩溃

Posted

技术标签:

【中文标题】iOS Today Extension 中奇怪的 NSInternalInconsistencyException 和 PKService 崩溃【英文标题】:Strange NSInternalInconsistencyException and PKService crash in iOS Today Extension 【发布时间】:2015-05-28 11:21:42 【问题描述】:

我在我的 ios Today Extension 上安装了 Crashlytics,但我遇到了这个奇怪的崩溃。有谁知道为什么会发生这种情况?

致命异常:NSInternalInconsistencyException 移除非活动插件 com.somecompany.someapp.TodayExtension(1.0)>

它崩溃的行是

11 PlugInKit -[PKService unregisterPersonality:] + 188

在我今天的扩展中,在 viewDidLoad 中,它将获取用户的当前位置,然后发出网络请求以获取有关该位置的数据。发生这种情况是因为我的操作花费了太长时间并且 iOS 正在杀死我的扩展程序吗?我无法重现这一点,但我认为用户看到的是扩展名应该在的空白区域,或者除了扩展名的标题之外什么都不显示。

线程:致命异常:NSInternalInconsistencyException 0 核心基础 0x0000000181cc2530 __exceptionPreprocess + 132 1 libobjc.A.dylib 0x0000000192c980e4 objc_exception_throw + 60 2 核心基础 0x0000000181cc23f0 +[NSException raise:format:] 3 基础 0x0000000182b6dc34 -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 112 4 PlugInKit 0x000000018d1c04a0 __35-[PKService unregisterPersonality:]_block_invoke + 488 5 libdispatch.dylib 0x00000001932e9954 _dispatch_client_callout + 16 6 libdispatch.dylib 0x00000001932f31e4 _dispatch_barrier_sync_f_invoke + 76 7 PlugInKit 0x000000018d1c024c-[PKService unregisterPersonality:] + 188 8 PlugInKit 0x000000018d1bdfec-[PKServicePersonality shutdownPlugIn] + 108 9 核心基础 0x0000000181cc8350 __invoking___ + 144 10 CoreFoundation 0x0000000181bc621c -[NSInvocation 调用] + 296 11 基础 0x0000000182c9d33c __NSXPCCONNECTION_IS_CALLING_OUT_TO_EXPORTED_OBJECT__ + 24 12 基础 0x0000000182b4b8c8 -[NSXPCConnection _decodeAndInvokeMessageWithData:] + 1604 13 基础 0x0000000182accbd4 message_handler + 708 14 libxpc.dylib 0x00000001934f0c78 _xpc_connection_call_event_handler + 68 15 libxpc.dylib 0x00000001934eeb7c _xpc_connection_mach_event + 2160 16 libdispatch.dylib 0x00000001932e9a28 _dispatch_client_callout4 + 16 17 libdispatch.dylib 0x00000001932ed140 _dispatch_mach_msg_invoke + 492 18 libdispatch.dylib 0x00000001932f42d4 _dispatch_queue_drain + 2008 19 libdispatch.dylib 0x00000001932ec668 _dispatch_mach_invoke + 136 20 libdispatch.dylib 0x00000001932f42d4 _dispatch_queue_drain + 2008 21 libdispatch.dylib 0x00000001932eca5c _dispatch_queue_invoke + 132 22 libdispatch.dylib 0x00000001932f6318 _dispatch_root_queue_drain + 720 23 libdispatch.dylib 0x00000001932f7c4c _dispatch_worker_thread3 + 108 24 libsystem_pthread.dylib 0x00000001934c922c _pthread_wqthread + 816 25 libsystem_pthread.dylib 0x00000001934c8ef0 start_wqthread + 4 线程:崩溃:服务同步 0 libsystem_kernel.dylib 0x000000019342f270 __pthread_kill + 8 1 libsystem_pthread.dylib 0x00000001934cd170 pthread_kill + 112 2 libsystem_c.dylib 0x00000001933a6b18 中止 + 112 3 libc++abi.dylib 0x0000000192465418 __cxa_bad_cast 4 libc++abi.dylib 0x0000000192484b8c default_unexpected_handler() 5 libobjc.A.dylib 0x0000000192c983c0 _objc_terminate() + 128 6 libc++abi.dylib 0x0000000192481bb4 std::__terminate(void (*)()) + 16 7 libc++abi.dylib 0x0000000192481c24 std::terminate() + 64 8 libobjc.A.dylib 0x0000000192c98318 _destroyAltHandlerList 9 libdispatch.dylib 0x00000001932e9968 _dispatch_client_callout + 36 10 libdispatch.dylib 0x00000001932f31e4 _dispatch_barrier_sync_f_invoke + 76 11 PlugInKit 0x000000018d1c024c -[PKService unregisterPersonality:] + 188 12 PlugInKit 0x000000018d1bdfec-[PKServicePersonality shutdownPlugIn] + 108 13 核心基础 0x0000000181cc8350 __invoking___ + 144 14 CoreFoundation 0x0000000181bc621c -[NSInvocation 调用] + 296 15 基础 0x0000000182c9d33c __NSXPCCONNECTION_IS_CALLING_OUT_TO_EXPORTED_OBJECT__ + 24 16 基础 0x0000000182b4b8c8 -[NSXPCConnection _decodeAndInvokeMessageWithData:] + 1604 17 基础 0x0000000182accbd4 message_handler + 708 18 libxpc.dylib 0x00000001934f0c78 _xpc_connection_call_event_handler + 68 19 libxpc.dylib 0x00000001934eeb7c _xpc_connection_mach_event + 2160 20 libdispatch.dylib 0x00000001932e9a28 _dispatch_client_callout4 + 16 21 libdispatch.dylib 0x00000001932ed140 _dispatch_mach_msg_invoke + 492 22 libdispatch.dylib 0x00000001932f42d4 _dispatch_queue_drain + 2008 23 libdispatch.dylib 0x00000001932ec668 _dispatch_mach_invoke + 136 24 libdispatch.dylib 0x00000001932f42d4 _dispatch_queue_drain + 2008 25 libdispatch.dylib 0x00000001932eca5c _dispatch_queue_invoke + 132 26 libdispatch.dylib 0x00000001932f6318 _dispatch_root_queue_drain + 720 27 libdispatch.dylib 0x00000001932f7c4c _dispatch_worker_thread3 + 108 28 libsystem_pthread.dylib 0x00000001934c922c _pthread_wqthread + 816

我的主线程(虽然没有在这里崩溃):

线程:com.apple.main-thread 0 TodayExtension 0x00000001000ae370 -[TodayViewController normalView] (TodayViewController.m:32) 1 TodayExtension 0x00000001000adf58 __36-[TodayViewController showErrorView]_block_invoke (TodayViewController.m:173) 2 libdispatch.dylib 0x00000001932e9994 _dispatch_call_block_and_release + 24 3 libdispatch.dylib 0x00000001932e9954 _dispatch_client_callout + 16 4 libdispatch.dylib 0x00000001932ee20c _dispatch_main_queue_callback_4CF + 1608 5 核心基础 0x0000000181c7a2ec __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 12 6 核心基础 0x0000000181c78394 __CFRunLoopRun + 1492 7 核心基础 0x0000000181ba51f4 CFRunLoopRunSpecific + 396 8 图形服务 0x000000018afc76fc GSEventRunModal + 168 9 UIKit 0x000000018653610c UIApplicationMain + 1488 10 libxpc.dylib 0x00000001934fc250 _xpc_objc_main + 768 11 libxpc.dylib 0x00000001934fdf38 xpc_main + 200 12 基础 0x0000000182ca1818 service_connection_handler 13 插件套件 0x000000018d1be910 -[PKService 运行] + 600 14 PlugInKit 0x000000018d1be548 +[PKService 主] + 64 15 PlugInKit 0x000000018d1be938 + [PKService _defaultRun:参数:] + 24 16 libextension.dylib 0x00000001924f9960 NSExtensionMain + 68 17 libdyld.dylib 0x0000000193316a08 开始 + 4

【问题讨论】:

你能发布整个崩溃日志吗? 不,整件事! 对不起,您还想看什么?这就是 Crashlytics 给我的所有东西,我无法自己重现这次崩溃。 整个崩溃日志中还有其他内容吗? 【参考方案1】:

我在 Crashlytics 上看到的内容完全相同。 根据 Apple 的说法,这次崩溃是 iOS 8(包括 8.3 beta)中的一个已知错误。崩溃仅在扩展程序关闭时发生,这意味着用户看不到扩展程序崩溃。

所以我们现在唯一能做的就是忽略这次崩溃

【讨论】:

“根据 Apple 的说法,此崩溃是一个已知错误”的来源? 来自 Apple 开发者支持 @EmmanuelG。有什么链接可以确认吗?我在启动 Extension 时遇到了两次 [PKService _defaultRun:arguments:] 的问题。 我的 Crashlytics 显示 100.00% APP IN FOCUS,但在小部件方面,焦点状态可能不那么清晰

以上是关于iOS Today Extension 中奇怪的 NSInternalInconsistencyException 和 PKService 崩溃的主要内容,如果未能解决你的问题,请参考以下文章

iOS6 中奇怪的 SplitView/NavigationController 行为

iPhone 4 中 IOS 7 中奇怪的 UIScrollview 行为

如何在 iOS 4 中摆脱 UIPopoverController 中奇怪的黑色导航栏

iOS11 中奇怪的 uitableview 行为。单元格通过导航推送动画向上滚动

类中奇怪的异步/等待行为

UIImageView 中奇怪的对齐行为