解读与 SwiftUI 相关的 EXC_BAD_ACCESS 崩溃日志

Interpret EXC_BAD_ACCESS crash logs related to SwiftUI

所以我的应用程序经常发生崩溃,当附加调试器时,它只是在崩溃时跳转到 AppDelegate 的第一行,所以它不会通过指向某些东西的位置来给我太多帮助出错了。

我有崩溃日志,但我不确定如何解释它们,它们没有指向我编写的任何代码行,它们只是引用 SwiftUI、RenderBox、CoreFoundation 等。可以有没有人帮我解释这个或提供想法或分享可能有帮助的类似经验?

我已经尝试了通过 Xcode 提供的几种诊断工具(地址清理器、僵尸程序等),但我不想排除其中任何一个,因为可能我没有正确配置它们或某物。欢迎任何建议,几乎重写了整个应用程序尝试不同的东西来摆脱这个崩溃,但我总是只是猜测。

这是来自崩溃日志之一:

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Subtype: KERN_PROTECTION_FAILURE at 0x000000016f9cfff0
VM Region Info: 0x16f9cfff0 is in 0x16f9cc000-0x16f9d0000;  bytes after start: 16368  bytes before end: 15
      REGION TYPE                      START - END             [ VSIZE] PRT/MAX SHRMOD  REGION DETAIL
      MALLOC_TINY            000000013a800000-000000013a900000 [ 1024K] rw-/rwx SM=PRV  
      GAP OF 0x350cc000 BYTES
--->  STACK GUARD            000000016f9cc000-000000016f9d0000 [   16K] ---/rwx SM=NUL  ... for thread 0
      Stack                  000000016f9d0000-000000016facc000 [ 1008K] rw-/rwx SM=PRV  thread 0

Termination Signal: Segmentation fault: 11
Termination Reason: Namespace SIGNAL, Code 0xb
Terminating Process: exc handler [29449]
Triggered by Thread:  0

Thread 0 name:  Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0   RenderBox                       0x00000001d4a27518 RB::Rect::move+ 9496 (RB::AffineTransform&, RB::AffineTransform const&) + 152
1   RenderBox                       0x00000001d4a27504 RB::Rect::move+ 9476 (RB::AffineTransform&, RB::AffineTransform const&) + 132
2   RenderBox                       0x00000001d4a59078 RB::DisplayList::crop_bounds+ 213112 () + 144
3   RenderBox                       0x00000001d4a5a02c RB::DisplayList::draw+ 217132 (RB::DisplayList::Item const*, RB::DisplayList::CachedTransform const&) + 36
4   RenderBox                       0x00000001d4a59f00 RB::DisplayList::draw+ 216832 (RB::DisplayList const&) + 300
5   SwiftUI                         0x00000001d9da5d50 closure #1 in RBGraphicsContext.makeDisplayList+ 2981200 (contentRect:body:) + 152
6   SwiftUI                         0x00000001d9d808a0 partial apply for thunk for @escaping @callee_guaranteed (@guaranteed GraphicsContext) -> + 2828448 (@unowned Bool) + 40
7   SwiftUI                         0x00000001d9d805f4 closure #1 in cachedGraphicsRenderer+ 2827764 (_:) + 184
8   SwiftUI                         0x00000001d9db71f0 partial apply for thunk for @escaping @callee_guaranteed (@guaranteed GraphicsContext, @unowned CGSize) -> + 3052016 () + 44
9   SwiftUI                         0x00000001d9db6654 thunk for @escaping @callee_guaranteed (@in_guaranteed GraphicsContext, @in_guaranteed CGSize) -> (@out + 3049044 ()) + 64
10  SwiftUI                         0x00000001d9db71f0 partial apply for thunk for @escaping @callee_guaranteed (@guaranteed GraphicsContext, @unowned CGSize) -> + 3052016 () + 44
11  SwiftUI                         0x00000001d9db6654 thunk for @escaping @callee_guaranteed (@in_guaranteed GraphicsContext, @in_guaranteed CGSize) -> (@out + 3049044 ()) + 64
12  SwiftUI                         0x00000001d9db71f0 partial apply for thunk for @escaping @callee_guaranteed (@guaranteed GraphicsContext, @unowned CGSize) -> + 3052016 () + 44
13  SwiftUI                         0x00000001d9db6654 thunk for @escaping @callee_guaranteed (@in_guaranteed GraphicsContext, @in_guaranteed CGSize) -> (@out + 3049044 ()) + 64
14  SwiftUI                         0x00000001d9db71f0 partial apply for thunk for @escaping @callee_guaranteed (@guaranteed GraphicsContext, @unowned CGSize) -> + 3052016 () + 44
15  SwiftUI                         0x00000001d9db6654 thunk for @escaping @callee_guaranteed (@in_guaranteed GraphicsContext, @in_guaranteed CGSize) -> (@out + 3049044 ()) + 64
16  SwiftUI                         0x00000001d9db71f0 partial apply for thunk for @escaping @callee_guaranteed (@guaranteed GraphicsContext, @unowned CGSize) -> + 3052016 () + 44
17  SwiftUI                         0x00000001d9db6654 thunk for @escaping @callee_guaranteed (@in_guaranteed GraphicsContext, @in_guaranteed CGSize) -> (@out + 3049044 ()) + 64
18  SwiftUI                         0x00000001d9db71f0 partial apply for thunk for @escaping @callee_guaranteed (@guaranteed GraphicsContext, @unowned CGSize) -> + 3052016 () + 44
19  SwiftUI                         0x00000001d9db6654 thunk for @escaping @callee_guaranteed (@in_guaranteed GraphicsContext, @in_guaranteed CGSize) -> (@out + 3049044 ()) + 64
20  SwiftUI                         0x00000001d9db71f0 partial apply for thunk for @escaping @callee_guaranteed (@guaranteed GraphicsContext, @unowned CGSize) -> + 3052016 () + 44
21  SwiftUI                         0x00000001d9db6654 thunk for @escaping @callee_guaranteed (@in_guaranteed GraphicsContext, @in_guaranteed CGSize) -> (@out + 3049044 ()) + 64
22  SwiftUI                         0x00000001d9db71f0 partial apply for thunk for @escaping @callee_guaranteed (@guaranteed GraphicsContext, @unowned CGSize) -> + 3052016 () + 44
23  SwiftUI                         0x00000001d9db6654 thunk for @escaping @callee_guaranteed (@in_guaranteed GraphicsContext, @in_guaranteed CGSize) -> (@out + 3049044 ()) + 64
24  SwiftUI                         0x00000001d9db71f0 partial apply for thunk for @escaping @callee_guaranteed (@guaranteed GraphicsContext, @unowned CGSize) -> + 3052016 () + 44
25  SwiftUI                         0x00000001d9db6654 thunk for @escaping @callee_guaranteed (@in_guaranteed GraphicsContext, @in_guaranteed CGSize) -> (@out + 3049044 ()) + 64
26  SwiftUI                         0x00000001d9db71f0 partial apply for thunk for @escaping @callee_guaranteed (@guaranteed GraphicsContext, @unowned CGSize) -> + 3052016 () + 44
27  SwiftUI                         0x00000001d9db6654 thunk for @escaping @callee_guaranteed (@in_guaranteed GraphicsContext, @in_guaranteed CGSize) -> (@out + 3049044 ()) + 64
28  SwiftUI                         0x00000001d9db71f0 partial apply for thunk for @escaping @callee_guaranteed (@guaranteed GraphicsContext, @unowned CGSize) -> + 3052016 () + 44
29  SwiftUI                         0x00000001d9db6654 thunk for @escaping @callee_guaranteed (@in_guaranteed GraphicsContext, @in_guaranteed CGSize) -> (@out + 3049044 ()) + 64
30  SwiftUI                         0x00000001d9db71f0 partial apply for thunk for @escaping @callee_guaranteed (@guaranteed GraphicsContext, @unowned CGSize) -> + 3052016 () + 44

SwiftUI 行继续使用相同类型的内容,一直到 510,由于问题大小限制,我在 30 处将其切断。事实上,SwiftUI 重复了大约 500 个几乎相同的东西,这似乎很糟糕,但在这种情况下我不知道怎么说。

在我的例子中,这最终只是 Apple 方面在 SwiftUI 中的错误。我提交了反馈报告,它们最终在 iOS 的更高版本中得到修复,而我没有对我的代码进行任何更改。

我不认为我自己可以做任何事情来追踪崩溃并解决它们,因为它们是框架本身的问题。