【问题标题】:iOS: Crashlytics Crash Reports and Free RAMiOS:Crashlytics 崩溃报告和可用 RAM
【发布时间】:2012-10-25 16:59:20
【问题描述】:

在我们的一个 iPhone 应用程序中,我们遇到了一些 Crashlytics 崩溃,到目前为止,我们无法重现这些崩溃。然而,仔细观察,我注意到了一点趋势......


崩溃 1:-[UINavigationTransitionView _notifyDelegateTransitionDidStopWithContext:]

可用内存:10%


崩溃 2:-[UINavigationTransitionView _notifyDelegateTransitionDidStopWithContext:]

可用内存:8%


崩溃 3:HostBase::lock()

可用内存:8%


崩溃4:-[UINavigationTransitionView _notifyDelegateTransitionDidStopWithContext:]

可用内存:22%


可用 RAM 的数量是否意味着什么?我们能否确定这些是实际的崩溃,而不是我们的应用程序由于内存不足而被操作系统杀死?如果应用在后台崩溃,Crashlytics 是否会发送崩溃报告?

添加了几个堆栈跟踪...

异常类型:SIGSEGV、导航崩溃

0    libobjc.A.dylib    
objc_msgSend + 15
1    UIKit ✭    
-[UINavigationTransitionView _notifyDelegateTransitionDidStopWithContext:] + 274
2    UIKit  
-[UIViewAnimationState sendDelegateAnimationDidStop:finished:] + 158
3    UIKit  
-[UIViewAnimationState animationDidStop:finished:] + 50
4    QuartzCore 
CA::Layer::run_animation_callbacks(void*) + 208
5    libdispatch.dylib  
_dispatch_client_callout + 22
6    libdispatch.dylib  
_dispatch_main_queue_callback_4CF$VARIANT$mp + 224
7    CoreFoundation 
__CFRunLoopRun + 1290
8    CoreFoundation 
CFRunLoopRunSpecific + 356
9    CoreFoundation 
CFRunLoopRunInMode + 104
10   GraphicsServices   
GSEventRunModal + 74
11   UIKit  
UIApplicationMain + 1120

异常类型:SIGSEGV、HostLock 崩溃

0    libobjc.A.dylib    
objc_msgSend + 15
1    CFNetwork ✭    
HostBase::lock() + 14
2    CFNetwork  
DispatchHost::performInvocation(void const*) + 12
3    CFNetwork  
__setupTCPConnection_block_invoke_2 + 290
4
...
libsystem_network.dylib 
__tcp_connection_notify_complete_block_invoke_1 + 18
7    libsystem_c.dylib  
_pthread_wqthread + 294

【问题讨论】:

  • 什么是异常类型,你能显示更多的堆栈跟踪吗?目前只能胡乱猜测。
  • 当然,添加了它们。我试图弄清楚剩余的可用 RAM 量(这么少)是否与问题有关(例如操作系统杀死了我的应用程序和它显示为崩溃),或者如果低 RAM 只是一个红鲱鱼。
  • 我知道这是一个旧线程,但为了别人。应用程序在低内存条件下被杀死的事实并不意味着它不是主要的猪。应用程序在内存不足的情况下崩溃,因为各种资源分配调用开始偶尔失败。如果您正在泄漏内存,您的应用程序可能会负责将自己置于这种受限的内存条件下。有些情况您可以正确处理,有些则不能。

标签: ios memory crash-reports


【解决方案1】:

8% 的内存可能很多,我非常怀疑这是一个问题。我不知道他们在后台运行时是否会发送崩溃,您必须直接询问他们,因为他们的SDK不是开源的。

您添加的两个异常堆栈跟踪都提示存在内存问题。

第一个看起来像是试图在一个对象的动画结束时调用一个委托,该对象不再存在。

第二个看起来像一个类似的问题,其中完成块正在访问一个已经消失的对象。所以你可以检查你的块是否有这样的模式。

【讨论】:

  • 谢谢,我会进一步调查。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多