什么可能导致此SIGSEGV错误?

时间:2013-05-01 15:18:26

标签: iphone ios crash crash-reports sigsegv

我收到了一张我无法解释的崩溃日志。我四处搜索,似乎SIGSEGV与记忆有关。但在我的情况下,除了堆栈跟踪中的main.m之外,没有任何我自己的代码。此外,它似乎没有象征任何系统库。

到目前为止,崩溃只发生在一部iPhone上。在其他手机上我无法重现它。现在我完全卡住了,不知道在哪里继续这样,如果有人在看到这样的事情之前听到他们的问题和解决方案就好了。

崩溃日志:

Incident Identifier: TODO
CrashReporter Key:   TODO
Hardware Model:      iPhone4,1
OS Version:      iPhone OS 6.1.3 (10B329)
Report Version:  104
Exception Type:  SIGSEGV
Exception Codes: SEGV_ACCERR at 0x41fd5903
Crashed Thread:  0

Thread 0 Crashed:
0   libobjc.A.dylib                     0x3b0b9564 0x3b0b6000 + 13668
1   libobjc.A.dylib                     0x3b0bb1d7 0x3b0b6000 + 20951
2   CoreFoundation                      0x33396605 0x332d4000 + 796165
3   CoreFoundation                      0x3339635d 0x332d4000 + 795485
4   libobjc.A.dylib                     0x3b0bea65 0x3b0b6000 + 35429
5   libc++abi.dylib                     0x3ab0b07b 0x3ab0a000 + 4219
6   libc++abi.dylib                     0x3ab0b114 0x3ab0a000 + 4372
7   libc++abi.dylib                     0x3ab0c599 0x3ab0a000 + 9625
8   libobjc.A.dylib                     0x3b0be9d1 0x3b0b6000 + 35281
9   CoreFoundation                      0x332dcf21 0x332d4000 + 36641
10  CoreFoundation                      0x332dcd49 0x332d4000 + 36169
11  GraphicsServices                    0x36eb52eb 0x36eb0000 + 21227
12  UIKit                               0x351f2301 0x3519b000 + 357121
13  Stylbar                             0x0007109f main (main.m:21)

编辑5月3日:

崩溃日志由用户发送。遗憾的是,我自己无法重现这个问题,这就是为什么我很难弄清楚这个崩溃日志出了什么问题。

在打开某个视图控制器时,同一用户似乎连续发生了大约15次。视图控制器对服务器执行多次调用以加载帖子,评论和图像以及个人资料图片。打开此视图控制器时执行的所有代码可能超过2000行代码(不包括此代码中使用的RestKit和SBWebImage库)。在这里发布该代码对我害怕的任何人都无济于事。

2 个答案:

答案 0 :(得分:0)

花费时间寻找崩溃原因的最简单有用的方法是查看代码并关注UIKit拥有指向代码的委托的位置。例如,我发现这种事情最常出现的地方是UITableView。这些问题难以追查的原因是它们可能只发生在内存不足的情况下,或者发生在一些非常难以重现的不常见UI环境中。最好只进行代码审查,并确保设置为指向类的委托在您自己的对象析构函数中设置为nil。如果你有很多开发人员,通常更好地处理一些更高级别的抽象,比如整个项目中使用的泛型表和单元类,而不是让每个开发人员编写一个UITableView并犯下错误,比如忘记拒绝委托很难找到。

答案 1 :(得分:0)

当您的应用程序尝试访问不存在的内存地址或某个已经保留给其他程序的地址时,会发生SIGSEGV问题。我现在对应用程序有同样的问题,但我必须检查我的代码以更好地解决它。这种问题的一个线索可能与此相当(在维基百科中找到):

#include <stdlib.h>  
     

int main(void)
  {
      char p = NULL; / p是指向char的指针,它将poiting初始化为“nowhere”* /
      * p ='x'; / *尝试将char'x'保存在'no address'* /
中       返回0;
  }

我希望这可以帮助别人。