(我在 StackOverflow 上发现了其他一些与 QuartzCore 崩溃相关的问题,但没有一个是针对我们所拥有的确切上下文的。)
我们在 App Store 中有一个 iOS 应用程序。最近,我们在该应用程序的管理器/崩溃中看到一种新型崩溃,似乎与 iOS 13 设备有关(过去几周有 21 台设备受到影响,全部运行 iOS 13.1、.2 或 .3)。 Xcode 报告崩溃发生在 QuartzCore 的 CA::Render::Encoder::grow(unsigned long) 上。
知道它是什么以及如何修复它吗?它看起来与我们的代码无关。这可能是苹果最近的一个错误吗? (在 iOS 13 之前我们没有这些崩溃报告。)提前谢谢您。
以下是崩溃日志的摘录:
OS Version: iPhone OS 13.3 (17C54)
Release Type: User
Baseband Version: 2.03.07
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 0x00000001b431aefc __pthread_kill + 8
1 libsystem_pthread.dylib 0x00000001b423a8b8 pthread_kill + 228 (pthread.c:1458)
2 libsystem_c.dylib 0x00000001b41caa74 abort + 104 (abort.c:110)
3 QuartzCore 0x00000001bb0fc3b0 CA::Render::Encoder::grow(unsigned long) + 308 (render-coding.cpp:562)
4 QuartzCore 0x00000001bb0fcb20 CA::Render::Encoder::encode_data_async(void const*, unsigned long, void (*)(void const*, void*), ... + 180 (render-coding.h:272)
5 QuartzCore 0x00000001bafb2f78 CA::Render::Image::encode(CA::Render::Encoder*) const + 740 (render-image.cpp:401)
6 QuartzCore 0x00000001bb0fc438 CA::Render::Encoder::encode_object_uncached(CA::Render::Object const*) + 136 (render-coding.cpp:905)
7 QuartzCore 0x00000001bafcf9d4 CA::Render::Layer::encode(CA::Render::Encoder*) const + 116 (render-coding.h:388)
8 QuartzCore 0x00000001bb0fc438 CA::Render::Encoder::encode_object_uncached(CA::Render::Object const*) + 136 (render-coding.cpp:905)
9 QuartzCore 0x00000001bb100ebc CA::Render::encode_set_object(CA::Render::Encoder*, unsigned long, unsigned int, CA::Render::Obje... + 196 (render-coding.cpp:2151)
10 QuartzCore 0x00000001bb04094c invocation function for block in CA::Context::commit_transaction(CA::Transaction*, double) + 1080 (CAContextInternal.mm:1632)
11 QuartzCore 0x00000001bb0fae1c CA::Layer::commit_if_needed(CA::Transaction*, void (CA::Layer*, unsigned int, unsigned int) block... + 348 (CALayer.mm:2647)
12 QuartzCore 0x00000001bb0fad98 CA::Layer::commit_if_needed(CA::Transaction*, void (CA::Layer*, unsigned int, unsigned int) block... + 216 (CALayer.mm:2633)
13 QuartzCore 0x00000001bb0fad98 CA::Layer::commit_if_needed(CA::Transaction*, void (CA::Layer*, unsigned int, unsigned int) block... + 216 (CALayer.mm:2633)
14 QuartzCore 0x00000001bb0fad98 CA::Layer::commit_if_needed(CA::Transaction*, void (CA::Layer*, unsigned int, unsigned int) block... + 216 (CALayer.mm:2633)
15 QuartzCore 0x00000001bb0fad98 CA::Layer::commit_if_needed(CA::Transaction*, void (CA::Layer*, unsigned int, unsigned int) block... + 216 (CALayer.mm:2633)
16 QuartzCore 0x00000001bb0fad98 CA::Layer::commit_if_needed(CA::Transaction*, void (CA::Layer*, unsigned int, unsigned int) block... + 216 (CALayer.mm:2633)
17 QuartzCore 0x00000001bb0fad98 CA::Layer::commit_if_needed(CA::Transaction*, void (CA::Layer*, unsigned int, unsigned int) block... + 216 (CALayer.mm:2633)
18 QuartzCore 0x00000001bb0fad98 CA::Layer::commit_if_needed(CA::Transaction*, void (CA::Layer*, unsigned int, unsigned int) block... + 216 (CALayer.mm:2633)
19 QuartzCore 0x00000001bb0fad98 CA::Layer::commit_if_needed(CA::Transaction*, void (CA::Layer*, unsigned int, unsigned int) block... + 216 (CALayer.mm:2633)
20 QuartzCore 0x00000001bb0fad98 CA::Layer::commit_if_needed(CA::Transaction*, void (CA::Layer*, unsigned int, unsigned int) block... + 216 (CALayer.mm:2633)
21 QuartzCore 0x00000001bb0fad98 CA::Layer::commit_if_needed(CA::Transaction*, void (CA::Layer*, unsigned int, unsigned int) block... + 216 (CALayer.mm:2633)
22 QuartzCore 0x00000001bb0fad98 CA::Layer::commit_if_needed(CA::Transaction*, void (CA::Layer*, unsigned int, unsigned int) block... + 216 (CALayer.mm:2633)
23 QuartzCore 0x00000001bb0fad98 CA::Layer::commit_if_needed(CA::Transaction*, void (CA::Layer*, unsigned int, unsigned int) block... + 216 (CALayer.mm:2633)
24 QuartzCore 0x00000001bb0fad98 CA::Layer::commit_if_needed(CA::Transaction*, void (CA::Layer*, unsigned int, unsigned int) block... + 216 (CALayer.mm:2633)
25 QuartzCore 0x00000001bb0fad98 CA::Layer::commit_if_needed(CA::Transaction*, void (CA::Layer*, unsigned int, unsigned int) block... + 216 (CALayer.mm:2633)
26 QuartzCore 0x00000001bb03fbc4 CA::Context::commit_transaction(CA::Transaction*, double) + 2868 (CAContextInternal.mm:2288)
27 QuartzCore 0x00000001bb069fd0 CA::Transaction::commit() + 684 (CATransactionInternal.mm:438)
28 UIKitCore 0x00000001b8648d60 _afterCACommitHandler + 144 (UIApplication.m:3076)
29 CoreFoundation 0x00000001b44ab524 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 36 (CFRunLoop.c:1758)
30 CoreFoundation 0x00000001b44a61c4 __CFRunLoopDoObservers + 420 (CFRunLoop.c:1868)
31 CoreFoundation 0x00000001b44a6774 __CFRunLoopRun + 1292 (CFRunLoop.c:2910)
32 CoreFoundation 0x00000001b44a5f40 CFRunLoopRunSpecific + 480 (CFRunLoop.c:3192)
33 GraphicsServices 0x00000001be723534 GSEventRunModal + 108 (GSEvent.c:2246)
34 UIKitCore 0x00000001b861ea60 UIApplicationMain + 1940 (UIApplication.m:4773)
35 <Our app name> 0x00000001029ed048 main + 88 (main.m:14)
36 libdyld.dylib 0x00000001b4324e18 start + 4
我的应用程序也遇到了同样的崩溃。大约 710 台设备击中了它,但我无法离线复制它。堆栈是这样的:
0 libsystem_kernel.dylib ___pthread_kill + 8
1 libsystem_pthread.dylib _pthread_kill + 208
2 libsystem_c.dylib _abort + 124
3 QuartzCore CA::Render::Encoder::grow(unsigned long) + 236
4 QuartzCore CA::Render::Layer::encode(CA::Render::Encoder*) const + 60
5 QuartzCore CA::Render::encode_set_object(CA::Render::Encoder*, unsigned long, unsigned int, CA::Render::Object*, unsigned int) + 192
6 QuartzCore ___ZN2CA7Context18commit_transactionEPNS_11TransactionEdPd_block_invoke + 272
7 QuartzCore CA::Layer::commit_if_needed(CA::Transaction*, void ( block_pointer)(CA::Layer*, unsigned int, unsigned int)) + 384
8 QuartzCore CA::Layer::commit_if_needed(CA::Transaction*, void ( block_pointer)(CA::Layer*, unsigned int, unsigned int)) + 264
9 QuartzCore CA::Layer::commit_if_needed(CA::Transaction*, void ( block_pointer)(CA::Layer*, unsigned int, unsigned int)) + 264
10 QuartzCore CA::Layer::commit_if_needed(CA::Transaction*, void ( block_pointer)(CA::Layer*, unsigned int, unsigned int)) + 264
11 QuartzCore CA::Layer::commit_if_needed(CA::Transaction*, void ( block_pointer)(CA::Layer*, unsigned int, unsigned int)) + 264
12 QuartzCore CA::Layer::commit_if_needed(CA::Transaction*, void ( block_pointer)(CA::Layer*, unsigned int, unsigned int)) + 264
13 QuartzCore CA::Layer::commit_if_needed(CA::Transaction*, void ( block_pointer)(CA::Layer*, unsigned int, unsigned int)) + 264
14 QuartzCore CA::Layer::commit_if_needed(CA::Transaction*, void ( block_pointer)(CA::Layer*, unsigned int, unsigned int)) + 264
15 QuartzCore CA::Layer::commit_if_needed(CA::Transaction*, void ( block_pointer)(CA::Layer*, unsigned int, unsigned int)) + 264
16 QuartzCore CA::Layer::commit_if_needed(CA::Transaction*, void ( block_pointer)(CA::Layer*, unsigned int, unsigned int)) + 264
17 QuartzCore CA::Layer::commit_if_needed(CA::Transaction*, void ( block_pointer)(CA::Layer*, unsigned int, unsigned int)) + 264
18 QuartzCore CA::Layer::commit_if_needed(CA::Transaction*, void ( block_pointer)(CA::Layer*, unsigned int, unsigned int)) + 264
19 QuartzCore CA::Layer::commit_if_needed(CA::Transaction*, void ( block_pointer)(CA::Layer*, unsigned int, unsigned int)) + 264
20 QuartzCore CA::Layer::commit_if_needed(CA::Transaction*, void ( block_pointer)(CA::Layer*, unsigned int, unsigned int)) + 264
21 QuartzCore CA::Layer::commit_if_needed(CA::Transaction*, void ( block_pointer)(CA::Layer*, unsigned int, unsigned int)) + 264
22 QuartzCore CA::Layer::commit_if_needed(CA::Transaction*, void ( block_pointer)(CA::Layer*, unsigned int, unsigned int)) + 264
23 QuartzCore CA::Layer::commit_if_needed(CA::Transaction*, void ( block_pointer)(CA::Layer*, unsigned int, unsigned int)) + 264
24 QuartzCore CA::Layer::commit_if_needed(CA::Transaction*, void ( block_pointer)(CA::Layer*, unsigned int, unsigned int)) + 264
25 QuartzCore CA::Layer::commit_if_needed(CA::Transaction*, void ( block_pointer)(CA::Layer*, unsigned int, unsigned int)) + 264
26 QuartzCore CA::Layer::commit_if_needed(CA::Transaction*, void ( block_pointer)(CA::Layer*, unsigned int, unsigned int)) + 264
27 QuartzCore CA::Layer::commit_if_needed(CA::Transaction*, void ( block_pointer)(CA::Layer*, unsigned int, unsigned int)) + 264
28 QuartzCore CA::Layer::commit_if_needed(CA::Transaction*, void ( block_pointer)(CA::Layer*, unsigned int, unsigned int)) + 264
29 QuartzCore CA::Layer::commit_if_needed(CA::Transaction*, void ( block_pointer)(CA::Layer*, unsigned int, unsigned int)) + 264
30 QuartzCore CA::Layer::commit_if_needed(CA::Transaction*, void ( block_pointer)(CA::Layer*, unsigned int, unsigned int)) + 264
31 QuartzCore CA::Layer::commit_if_needed(CA::Transaction*, void ( block_pointer)(CA::Layer*, unsigned int, unsigned int)) + 264
32 QuartzCore CA::Layer::commit_if_needed(CA::Transaction*, void ( block_pointer)(CA::Layer*, unsigned int, unsigned int)) + 264
33 QuartzCore CA::Context::commit_transaction(CA::Transaction*, double, double*) + 6284
34 QuartzCore CA::Transaction::commit() + 652
35 QuartzCore CA::Transaction::flush_as_runloop_observer(bool) + 84
36 CoreFoundation ___CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 32
37 CoreFoundation ___CFRunLoopDoObservers + 552
38 CoreFoundation ___CFRunLoopRun + 1020
39 CoreFoundation _CFRunLoopRunSpecific + 584
40 GraphicsServices _GSEventRunModal + 160
41 UIKitCore -[UIApplication _run] + 868
42 UIKitCore _UIApplicationMain + 312
43 MyOnlineApp main (main.m:17)
44 dyld 0x00000001bb75e000 + 81392
我到处搜索并阅读了类似崩溃的帖子、Apple API 文档,但仍然没有任何线索。
有人可以分享一些有关调试或修复此类问题的技巧吗?预先感谢!