5

我正在尝试调试我不知道原因的崩溃。不幸的是,我所拥有的只是我从 Crashlytics 检索到的堆栈跟踪,并且几乎没有证据表明我的应用程序会导致这种情况发生,所以很遗憾我无法提供任何具体的代码示例,我在这里发布纯粹的希望有人遇到过这个。

我在通过 Crashlytics 收集的所有相关崩溃堆栈跟踪中看到它在标题为“com.apple.avkit.seekQueue”的线程上崩溃。输出如下所示:

Crashed: com.apple.avkit.seekQueue
0  libobjc.A.dylib                0x18c3e17f4 objc_object::release() + 8
1  libsystem_blocks.dylib         0x18c86fa68 _Block_release + 160
2  libdispatch.dylib              0x18c81a9a0 _dispatch_client_callout + 16
3  libdispatch.dylib              0x18c828ad4 _dispatch_queue_serial_drain + 928
4  libdispatch.dylib              0x18c81e2cc _dispatch_queue_invoke + 884
5  libdispatch.dylib              0x18c828fa8 _dispatch_queue_override_invoke + 344
6  libdispatch.dylib              0x18c82aa50 _dispatch_root_queue_drain + 540
7  libdispatch.dylib              0x18c82a7d0 _dispatch_worker_thread3 + 124
8  libsystem_pthread.dylib        0x18ca23100 _pthread_wqthread + 1096
9  libsystem_pthread.dylib        0x18ca22cac start_wqthread + 4

由于 Crashlytics,我看到的异常是 EXC_BAD_ACCESS KERN_INVALID_ADDRESS 0x0000000000000020。据此,我只能假设有一个 AVPlayer 对已释放或受限制的内存地址执行某些操作,但堆栈跟踪没有显示除主线程中的 main.m 之外的任何其他进入我的应用程序的入口点。

FWIW,Crashlytics 还建议以下内容:

堆栈跟踪表明堆损坏可能导致您的应用程序崩溃。释放悬空指针、线程竞争或错误的指针算法很容易发生内存损坏。要记住的重要一点是,由此产生的崩溃可能会在最初的损坏之后很久才发生。因此,此崩溃的堆栈跟踪可能无法提供代码中错误位置的任何线索。

说了这么多,有没有人对可能导致这种情况的原因有任何见解,我如何调试它,或者即使它可能是 AVKit 的问题?

4

0 回答 0