【问题标题】:Interpret EXC_BAD_ACCESS crash logs related to SwiftUI解读 SwiftUI 相关的 EXC_BAD_ACCESS 崩溃日志
【发布时间】:2020-02-07 16:20:44
【问题描述】:

所以我的应用程序经常发生崩溃,当附加调试器时,它只会在崩溃时跳转到 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 个几乎相同的东西这一事实似乎很糟糕,但在这种情况下,我不知道怎么说。

【问题讨论】:

  • 我认为没有你的代码我们只能猜测......错误
  • 找到一个生成这个的代码。是的,有时在 SwiftUI 中并不明显 - 我会在受影响的工作流程中逐一排除视图,直到找到发起者。
  • 我已经对视图和功能进行了大量注释,但无法追踪到代码中的任何特定位置。我不是在问什么是错的,而是更多地寻求使用 Xcode 信息的帮助让我朝着正确的方向前进。必须有某种方法可以使用崩溃日志信息来确定某种错误信息。
  • 所以我确实发现它只会在多次更新 UI 后崩溃。我认为这是 SwiftUI 中的一个错误,但很难确定。作为一种解决方法,我使用 .id 修饰符来更改视图的 id 并经常将其换成新的,这样它就不会达到导致崩溃的更新量。

标签: swift crash swiftui


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-07
    • 2019-03-24
    • 1970-01-01
    • 1970-01-01
    • 2011-12-25
    • 1970-01-01
    相关资源
    最近更新 更多