KERN_INVALID_ADDRESS位于0x0000000000000000

时间:2015-06-18 11:22:12

标签: ios objective-c xcode6 app-store

我使用Xcode 6.3.2开发了一个iPad应用程序。 我将我的应用程序提交到App Store进行审核,因为崩溃导致它被拒绝。以下是iTunes的崩溃报告。

Incident Identifier: 88DD7F94-3382-4241-A0D7-C3E7F6D20737
CrashReporter Key:   9881ae0cc3b3fbfccfd0ce1496d2fa08fec08782
Hardware Model:      xxx

Path:                /private/var/mobile/Containers/Bundle/Application/FDBBD67F-0EF7-43FB-80CB-8308A10A2D29/Vehicle Visuals.app/Vehicle Visuals
Identifier:          com.vehiclevisuals.Vehicle-Visuals
Version:             2.0.0 (1.1.0)
Code Type:           ARM-64 (Native)
Parent Process:      launchd [1]

Date/Time:           2015-06-12 12:33:57.988 -0700
Launch Time:         2015-06-12 12:22:14.581 -0700
OS Version:          iOS 8.3 (12F69)
Report Version:      105

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Subtype: KERN_INVALID_ADDRESS at 0x0000000000000000
Triggered by Thread:  0

Thread 0 name:  Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0   libobjc.A.dylib                 0x0000000195da7bdc 0x195d8c000 + 113628
1   QuartzCore                      0x00000001889fdc2c 0x1889ec000 + 72748
2   Vehicle Visuals                 0x0000000100126828 0x1000ec000 + 239656
3   Vehicle Visuals                 0x0000000100101e80 0x1000ec000 + 89728
4   UIKit                           0x0000000189118778 0x1890a4000 + 477048
5   UIKit                           0x0000000189116750 0x1890a4000 + 468816
6   UIKit                           0x0000000189112000 0x1890a4000 + 450560
7   UIKit                           0x00000001890b175c 0x1890a4000 + 55132
8   QuartzCore                      0x00000001889f9e18 0x1889ec000 + 56856
9   QuartzCore                      0x00000001889f4880 0x1889ec000 + 34944
10  QuartzCore                      0x00000001889f4724 0x1889ec000 + 34596
11  QuartzCore                      0x00000001889f3eb8 0x1889ec000 + 32440
12  QuartzCore                      0x00000001889f3c38 0x1889ec000 + 31800
13  UIKit                           0x0000000189137f8c 0x1890a4000 + 606092
14  UIKit                           0x0000000189137ef0 0x1890a4000 + 605936
15  CoreFoundation                  0x000000018462c2a0 0x18454c000 + 918176
16  CoreFoundation                  0x000000018462922c 0x18454c000 + 905772
17  CoreFoundation                  0x000000018462955c 0x18454c000 + 906588
18  CoreFoundation                  0x00000001845552d0 0x18454c000 + 37584
19  GraphicsServices                0x000000018dc436f8 0x18dc38000 + 46840
20  UIKit                           0x000000018911afa8 0x1890a4000 + 487336
21  Vehicle Visuals                 0x000000010013a1cc 0x1000ec000 + 319948
22  libdyld.dylib                   0x0000000196412a04 0x196410000 + 10756

Thread 1 name:  Dispatch queue: com.apple.libdispatch-manager

根据报告,它在操作系统版本崩溃:iOS 8.3(12F69)。 我在所有模拟器(iPad Air,iPad 2,iPad Retina)上使用相同的配置(iOS版本8.3(12F69))测试了我的应用程序,并在我的设备(iPad mini)上测试了iOS版本8.3(12F69),但没有我撞到了我的身边。 但它在我朋友的iPad Air上崩溃了同样的iOS版本(它给出了相同的崩溃报告,其中包含不同的无效地址,如下所示)

  

异常类型:EXC_BAD_ACCESS(SIGSEGV)异常子类型:   KERN_INVALID_ADDRESS位于0x0000000000000020由线程触发:0

我没有iPad Air,因此我可以使用该设备进行调试。

我还尝试使用以下命令进行符号化崩溃报告。

  

xcrun atos -o VehicleVisuals 0x0000000000000020

但它只是给了我以下十六进制代码。

  

0x00000020(在VehicleVisuals中)

我关注Link进行符号化。

我只是无法识别崩溃问题究竟在哪里。 请有人帮帮我吗?

1 个答案:

答案 0 :(得分:5)

EXC_BAD_ACCESS通常会发生,因为您正在向无效的内存地址发送Obj-C消息,这意味着您可能正在尝试访问某些已释放的对象。

它可能正在其他设备上运行,因为此对象不会同时发布。

我最近发生了一次类似的崩溃,因为在dealloc上没有一个计时器没有失效,并且当调用目标方法时,该对象不再存在。

您可以尝试启用NSZombie对象,看看是否找到了要释放的对象。在xCode 6中,您可以在Product>中启用它们。方案>编辑方案>诊断>启用Zombie Objects。

此外,NSZombieEnabled无法检测到很多这类错误。不幸的是,没有什么神奇的东西可以解决它。第二种选择是用仪器运行你的应用程序(特别是内存泄漏),看看你是否能得到一些东西。如果这不起作用,您将不得不检查您的代码并检查您是否有可能尝试访问已释放的对象。希望它有所帮助。

祝你好运!