【问题标题】:Production crash log in iOS applicationiOS 应用程序中的生产崩溃日志
【发布时间】:2018-05-30 06:39:32
【问题描述】:

我的崩溃日志没有任何信息。使用 atos 命令我得到这个信息说在 loginviewcontroller 中专门的 UnsafeBufferPointer.count.getter。知道为什么会导致此崩溃吗?

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Subtype: KERN_INVALID_ADDRESS at 0x0000000000000010
VM Region Info: 0x10 is not in any region.  Bytes before following region: 4340006896
      REGION TYPE                      START - END             [ VSIZE] PRT/MAX SHRMOD  REGION DETAIL
      UNUSED SPACE AT START
--->  
      __TEXT                 0000000102af4000-0000000102af8000 

Thread 7 name:
Thread 7 Crashed:
0   libobjc.A.dylib                 0x00000001821e4430 objc_msgSend + 16
1   UIKit                           0x000000018c543d90 -[UIWindowLayer actionForKey:] + 80 (UIWindow.m:432)
2   QuartzCore                      0x0000000186fcb984 -[CALayer layoutSublayers] + 244 (CALayer.mm:9308)
3   QuartzCore                      0x0000000186fcfad0 CA::Layer::layout_if_needed(CA::Transaction*) + 332 (CALayer.mm:9182)
4   QuartzCore                      0x0000000186f3c31c CA::Context::commit_transaction(CA::Transaction*) + 336 (CALayer.mm:2416)
5   QuartzCore                      0x0000000186f63b40 CA::Transaction::commit() + 540 (CATransactionInternal.mm:425)
6   QuartzCore                      0x0000000186f64980 CA::Transaction::observer_callback(__CFRunLoopObserver*, unsigned long, void*) + 92 (CATransactionInternal.mm:795)
7   CoreFoundation                  0x0000000182f2ecdc __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 32 (CFRunLoop.c:1824)
8   CoreFoundation                  0x0000000182f2c694 __CFRunLoopDoObservers + 412 (CFRunLoop.c:1934)
9   CoreFoundation                  0x0000000182e4cc78 CFRunLoopRunSpecific + 468 (CFRunLoop.c:3247)
10  WebCore                         0x000000018adc184c RunWebThread(void*) + 560 (WebCoreThread.mm:690)
11  libsystem_pthread.dylib         0x0000000182bb02b4 _pthread_body + 308 (pthread.c:740)
12  libsystem_pthread.dylib         0x0000000182bb0180 _pthread_start + 312 (pthread.c:799)
13  libsystem_pthread.dylib         0x0000000182baeb74 thread_start + 4

【问题讨论】:

    标签: ios swift crash


    【解决方案1】:

    在我看来,这就像堆损坏。可能是dangling pointer。基本上,-[UIWindowLayer actionForKey:] 正在与一个指针交互,该指针不再是指向有效对象的指针。这是objc_msgSend 内崩溃的极其常见的原因。

    恐怕这份报告不太可能揭示原因。悬空指针的原因与导致的崩溃(效果)发生在不同的时间是很常见的。因此,捕获的堆栈跟踪显示有关此指针为何不再有效的任何信息的可能性非常低。

    在这种情况下我一般建议:

    • 查找看起来与堆损坏相关的其他崩溃(例如,objc_msgSend 中的更多内容)
    • 在 Instruments 中试用 Zombies
    • 试试 malloc scribble 或 guardmalloc,这两个很好的内存调试工具

    很难,甚至通常不可能推断堆损坏。因此,只需尝试查找并解决尽可能多的问题。完全有可能其中一个负责各种崩溃,其中一个可能就是这个。

    祝你好运!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-31
      • 1970-01-01
      • 2014-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多