【问题标题】:iOS Crash - terminate from FrontBoardServicesiOS 崩溃 - 从 FrontBoardServices 终止
【发布时间】:2021-08-07 14:35:54
【问题描述】:

我收到了一个堆栈跟踪信息,我一直难以追踪源代码。它发生在生产中,我们无法在本地重现。

Incident Identifier: *
Hardware Model:      iPad11,4
Process:             MyApp [900]
Path:                /private/var/containers/Bundle/Application/27DCC9B7-76AF-491F-9804-7F7B45FC2FB9/MyApp.app/MyApp
Identifier:          com.mycompany.myapp
Version:             3 (1.0.0)
AppStoreTools:       12E506
AppVariant:          1:iPad11,4:14
Beta:                YES
Code Type:           ARM-64 (Native)
Role:                Non UI
Parent Process:      launchd [1]
Coalition:           com.mycompany.myapp [402]


Date/Time:           2021-08-05 13:03:33.7235 +0200
Launch Time:         2021-08-05 12:42:41.7888 +0200
OS Version:          iPhone OS 14.6 (18F72)
Release Type:        User
Baseband Version:    3.04.01
Report Version:      104

Exception Type:  EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Note:  EXC_CORPSE_NOTIFY
Triggered by Thread:  0

Thread 0 name:
Thread 0 Crashed:
0   libsystem_kernel.dylib          0x00000001c1577334 0x1c154e000 + 168756
1   libsystem_pthread.dylib         0x00000001dea41a9c pthread_kill + 272 (pthread.c:1582)
2   libsystem_c.dylib               0x000000019cea9c10 __abort + 116 (abort.c:147)
3   libsystem_c.dylib               0x000000019cea9b9c abort + 116 (abort.c:118)
4   libc++abi.dylib                 0x00000001a86a3bb8 abort_message + 132 (abort_message.cpp:78)
5   libc++abi.dylib                 0x00000001a86a2fc0 std::__terminate(void (*)()) + 52 (cxa_handlers.cpp:67)
6   libc++abi.dylib                 0x00000001a86a2f2c std::terminate() + 48 (cxa_handlers.cpp:88)
7   libdispatch.dylib               0x00000001936e8830 _dispatch_client_callout + 40 (object.m:562)
8   libdispatch.dylib               0x00000001936ec30c _dispatch_block_invoke_direct + 268 (queue.c:468)
9   FrontBoardServices              0x00000001a30e0fa0 __FBSSERIALQUEUE_IS_CALLING_OUT_TO_A_BLOCK__ + 48 (FBSSerialQueue.m:184)
10  FrontBoardServices              0x00000001a30e0c30 -[FBSSerialQueue _targetQueue_performNextIfPossible] + 448 (FBSSerialQueue.m:227)
11  FrontBoardServices              0x00000001a30e1184 -[FBSSerialQueue _performNextFromRunLoopSource] + 32 (FBSSerialQueue.m:258)
12  CoreFoundation                  0x0000000193a759e8 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 28 (CFRunLoop.c:1967)
13  CoreFoundation                  0x0000000193a758e4 __CFRunLoopDoSource0 + 208 (CFRunLoop.c:2011)
14  CoreFoundation                  0x0000000193a74be8 __CFRunLoopDoSources0 + 268 (CFRunLoop.c:2048)
15  CoreFoundation                  0x0000000193a6ebc8 __CFRunLoopRun + 820 (CFRunLoop.c:2925)
16  CoreFoundation                  0x0000000193a6e360 CFRunLoopRunSpecific + 600 (CFRunLoop.c:3242)
17  GraphicsServices                0x00000001ab0ac734 GSEventRunModal + 164 (GSEvent.c:2259)
18  UIKitCore                       0x00000001964e9584 -[UIApplication _run] + 1072 (UIApplication.m:3269)
19  UIKitCore                       0x00000001964eedf4 UIApplicationMain + 168 (UIApplication.m:4740)
20  MyApp                           0x0000000104aed5e0 main + 76 (main.m:38)
21  libdyld.dylib                   0x000000019372acf8 start + 4

这种崩溃的原因是什么?调试此类崩溃的最佳方法是什么?

【问题讨论】:

    标签: ios swift objective-c crash


    【解决方案1】:

    来自苹果的documentation

    EXC_CRASH (SIGABRT)
    EXC_CRASH (SIGABRT) 表示进程因收到 SIGABRT 信号而终止。通常,发送此信号是因为进程中有一个名为 abort() 的函数,例如当应用程序遇到未捕获的 Objective-C 或 C++ 语言异常时。解决语言异常崩溃更详细地解释了如何处理未捕获的语言异常。

    如果没有指示语言异常触发崩溃的 Last Exception Backtrace,请查看崩溃线程的回溯以确定进程中的代码是否调用了 abort()。

    当应用程序扩展程序的初始化时间过长时,操作系统会向应用程序扩展程序进程发送 SIGABRT。这些崩溃包括一个值为 LAUNCH_HANG 的异常子类型字段。因为扩展没有 main 函数,所以初始化所花费的任何时间都发生在扩展和依赖库中存在的静态构造函数和 load() 方法中。尽管异常信息在看门狗终止中有所不同,但请使用解决看门狗终止中讨论的相同技术来研究 LAUNCH_HANG。

    似乎在来自 FrontBoardServices 的调用之前调用了 abort 的进程。

    看看这个Help with crash log EXC_CRASH (SIGABRT)这可能会有所帮助!

    【讨论】:

    • “甚至在来自 FrontBoardServices 的调用之前调用中止的进程” - 你能详细说明一下吗?哪个进程叫中止?我应该查看堆栈跟踪中的其他进程/线程吗?什么是 FrontBoardServices?这是否表明应用程序正在启动或从最小化状态唤醒?感谢您的任何澄清。您的链接似乎转发到导致 insertObject 被错误调用的讨论,但我的堆栈跟踪没有涉及我自己的代码?谢谢。
    • FrontBoardServices 只是 iOS FrontBoard 系统的客户端框架。简单来说,它是 UIKit 使用的私有框架。如果您上传完整的崩溃日志,我可能会猜到发生了什么。同时,我的印象是,您的一个或多个 xib 文件或故事板包含一个元素,该元素在设备所在的 iOS 版本中不再可用。这可以解释为什么你不能在本地复制它。
    • 该应用程序是一个 Cordova 应用程序,所以我怀疑它是否与 nib/storyboard 相关。 crashlytics 的统计数据确实表明 96% 的情况是在后台发生的。您会对崩溃报告的特定部分感兴趣吗?
    • 完整的崩溃报告会是最好的,但至少如果你能给Last Exception Backtrace: 它会指出一些事情。如果其中可能有敏感/机密信息,您可以使用星号将其隐藏。
    • 我在报告的原始帖子中包含了更多信息,报告的整个顶部以及主线程的崩溃。我在报告中的任何地方都没有看到任何Last Exception Backtrace?任何有助于找到的帮助表示赞赏。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-10
    • 2018-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-17
    相关资源
    最近更新 更多