我遇到了一个有趣的崩溃,我似乎永远无法在模拟器上复制它:

Exception Type:  EXC_BAD_ACCESS (SIGBUS)
Exception Codes: KERN_PROTECTION_FAILURE at 0x00000008
Crashed Thread:  0

Thread 0 Crashed:
0   libobjc.A.dylib                 0x3212e86c 0x3212c000 + 10348
1   StockTwits                      0x00016b06 0x1000 + 88838
2   Foundation                      0x30718422 0x306db000 + 250914
3   Foundation                      0x307183a4 0x306db000 + 250788
4   CFNetwork                       0x30933e74 0x30923000 + 69236
5   CFNetwork                       0x30927b70 0x30923000 + 19312
6   CFNetwork                       0x30927e62 0x30923000 + 20066
7   CFNetwork                       0x30927a60 0x30923000 + 19040
8   CFNetwork                       0x30927a12 0x30923000 + 18962
9   CFNetwork                       0x30927990 0x30923000 + 18832
10  CFNetwork                       0x3092790e 0x30923000 + 18702
11  CoreFoundation                  0x30352a86 0x302e1000 + 465542
12  CoreFoundation                  0x30354768 0x302e1000 + 472936
13  CoreFoundation                  0x30355504 0x302e1000 + 476420
14  CoreFoundation                  0x302fe8e4 0x302e1000 + 121060
15  CoreFoundation                  0x302fe7ec 0x302e1000 + 120812
16  GraphicsServices                0x31a776e8 0x31a74000 + 14056
17  GraphicsServices                0x31a77794 0x31a74000 + 14228
18  UIKit                           0x323272a0 0x32321000 + 25248
19  UIKit                           0x32325e10 0x32321000 + 19984
20  StockTwits                      0x00002fd4 0x1000 + 8148
21  StockTwits                      0x00002fa4 0x1000 + 8100

我启用了NSZombies以及堆栈日志记录。尽管我觉得它仍然与保留/释放有关,但仍通过静态分析器运行以确保所有对象都能正确保留和释放。

有什么想法吗?

最佳答案

您必须取消引用NULL指针,否则不会发生此崩溃。静态分析器是一个很好的工具,可用于提示您做错了什么。但是,未找到错误并不表示您的程序没有错误。同时打开僵尸并不总是有帮助的。有时,这只是一个简单的小疏忽。

模拟器没有显示此问题的事实并不过分。最后,它是一台具有不同处理器和体系结构的机器。在某些情况下,错误代码在一个平台上运行良好,而在另一个平台上崩溃。

您应该重新符号化堆栈跟踪,并仔细查看正在崩溃的函数。如果您需要更多帮助,最好在此处发布一些代码。

还有一个提示:这些问题通常散布在多种方法中。分析仪一次只能看到一种方法。在输入崩溃方法之前,您应该先看看对象发生了什么。

关于iphone - 如何诊断KERN_PROTECTION_FAILURE,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3411346/

10-10 19:06