Ios 异常类型:由nanozone_错误导致的EXC_崩溃(SIGABRT)

Ios 异常类型:由nanozone_错误导致的EXC_崩溃(SIGABRT),ios,crash,Ios,Crash,我正在开发一个应用程序,它有时会因为nanozone_错误而崩溃 应用程序监视AVAudioSessionRouteChangeNotification,然后执行相应的操作,如调用[AVAudioSession currentRoute],但有时,在调用此方法时,由于nanozone_错误,它会在iOS内部崩溃。我对此感到困惑。有人能帮我吗 Incident Identifier: CrashReporter Key: Hardware Model: iPhone7,1 Pro

我正在开发一个应用程序,它有时会因为nanozone_错误而崩溃 应用程序监视AVAudioSessionRouteChangeNotification,然后执行相应的操作,如调用[AVAudioSession currentRoute],但有时,在调用此方法时,由于nanozone_错误,它会在iOS内部崩溃。我对此感到困惑。有人能帮我吗

Incident Identifier: 
CrashReporter Key:   
Hardware Model:      iPhone7,1
Process:             MyAPP 
Path:                
Identifier:          
Version:             
Code Type:           ARM-64 (Native)
Parent Process:      launchd [1]

Date/Time:           
Launch Time:         
OS Version:          iOS 8.4 (12H143)
Report Version:      105

Exception Type:  EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Triggered by Thread:  26


Thread 26 name:  AVAudioSession Notify Thread
Thread 26 Crashed:
0   libsystem_kernel.dylib          0x0000000197187270 __pthread_kill + 8
1   libsystem_pthread.dylib         0x000000019722516c pthread_kill + 108
2   libsystem_c.dylib               0x00000001970feb14 abort + 108
3   libsystem_malloc.dylib          0x00000001971c23e0 nanozone_error + 316
4   libsystem_malloc.dylib          0x00000001971c254c _nano_malloc_check_clear + 360
5   libsystem_malloc.dylib          0x00000001971c1060 nano_malloc + 40
6   libsystem_malloc.dylib          0x00000001971b13e0 malloc_zone_malloc + 112
7   CoreFoundation                  0x0000000184bcae04 _CFRuntimeCreateInstance + 372
8   CoreFoundation                  0x0000000184bcbb04 CFBasicHashCreate + 108
9   CoreFoundation                  0x0000000184bcba28 CFDictionaryCreateMutable + 192
10  CoreFoundation                  0x0000000184c126a0 parseXMLElement + 2760
11  CoreFoundation                  0x0000000184c14220 getContentObject + 800
12  CoreFoundation                  0x0000000184c120c0 parseXMLElement + 1256
13  CoreFoundation                  0x0000000184c11a34 _CFPropertyListCreateFromUTF8Data + 2680
14  CoreFoundation                  0x0000000184bcb2a4 _CFPropertyListCreateWithData + 492
15  CoreFoundation                  0x0000000184bf7458 CFPropertyListCreateWithData + 100
16  AudioToolbox                    0x0000000184394c70 CADeserializer::ReadPlist() + 224
17  AudioToolbox                    0x0000000184288b6c MarshalCFPropertyList::DeserializeT(CADeserializer&, void const*&) + 28
18  AudioToolbox                    0x0000000184288ab0 TMarshaller<void const*>::Deserialize(CADeserializer&, void*&, unsigned int&) + 132
19  AudioToolbox                    0x00000001843ba6f0 PropertyMarshaller::Deserialize(unsigned int, void*&, unsigned int&, PropertyMarshaller::EClientServer) + 132
20  AudioToolbox                    0x00000001841e55a0 AudioSessionGetProperty + 620
21  libAVFAudio.dylib               0x0000000183644568 int GetProperty<__CFDictionary const*>(unsigned int, __CFDictionary const**) + 60
22  libAVFAudio.dylib               0x0000000183642460 -[AVAudioSession currentRoute] + 36
23  MyAPP                             0x000000010061bd88 -[MyAudioSession getCurrentOutputRoute] + 196
事件标识符:
CrashReporter密钥:
硬件型号:iPhone7,1
进程:MyAPP
路径:
标识符:
版本:
代码类型:ARM-64(本机)
父进程:已启动[1]
日期/时间:
发射时间:
操作系统版本:iOS 8.4(12H143)
报告版本:105
异常类型:EXC_崩溃(SIGABRT)
异常代码:0x0000000000,0x0000000000000000
由线程触发:26
线程26名称:AVAudioSession通知线程
线程26崩溃:
0 libsystem_kernel.dylib 0x0000000197187270_uupthread_kill+8
1 libsystem_pthread.dylib 0x000000019722516c pthread_kill+108
2 libsystem_c.dylib 0x00000001970feb14中止+108
3 libsystem_malloc.dylib 0x00000001971c23e0纳米区_错误+316
4 libsystem\u malloc.dylib 0x00000001971c254c\u nano\u malloc\u check\u clear+360
5 libsystem_malloc.dylib 0x00000001971c1060 nano_malloc+40
6 libsystem_malloc.dylib 0x00000001971b13e0 malloc_分区_malloc+112
7 CoreFoundation 0x0000000184bcae04\u CFRuntimeCreateInstance+372
8核心基金会0x0000000184bcbb04 CFBasicHashCreate+108
9 CoreFoundation 0x0000000184bcba28 CFDictionaryCreateMutable+192
10 CoreFoundation 0x0000000184c126a0 parseXMLElement+2760
11 CoreFoundation 0x0000000184c14220 getContentObject+800
12 CoreFoundation 0x0000000184c120c0 parseXMLElement+1256
13 CoreFoundation 0x0000000184c11a34\u CFPropertyListCreateFromUTF8Data+2680
14 CoreFoundation 0x0000000184bcb2a4\u CFPropertyListCreateWithData+492
15 CoreFoundation 0x0000000184bf7458 CFPropertyListCreateWithData+100
16音频工具箱0x0000000184394c70 CADeserializer::ReadPlist()+224
17 AudioToolbox 0x0000000184288b6c MarshallCfPropertyList::反序列化(CADeserializer&,void const*&)+28
18 AudioToolbox 0x0000000184288ab0 TMarshaller::反序列化(CADeserializer&,void*&,unsigned int&)+132
19 AudioToolbox 0x00000001843ba6f0 PropertyMarshaller::反序列化(unsigned int,void*&,unsigned int&,PropertyMarshaller::EClientServer)+132
20 AudioToolbox 0x00000001841e55a0 AudioSessionGetProperty+620
21 libAVFAudio.dylib 0x0000000183644568 int-GetProperty(无符号int,字典常量**)+60
22 libAVFAudio.dylib 0x0000000183642460-[AVAudioSession currentRoute]+36
23 MyAPP 0x000000010061bd88-[MyAudioSession getCurrentOutputRoute]+196

不幸的是,当您点击
nanozone\u错误时,
堆栈跟踪不会告诉您太多,因为真正的问题发生在其他地方。这里发生的事情是
malloc\u zone\u malloc()
试图分配一块内存,但失败了。它失败是因为对新分配的块执行大量检查的
\u nano\u malloc\u check\u clear()
发现不一致并抛出
nanozone\u错误。见:

可能发生的情况是,内存块在解除分配后被修改并返回到堆,也就是说,它没有被正确保留。在调试时设置NSZombieEnabled环境变量是查找超过发布版本(或低于保留版本)的好方法。在调试方案中,转到“诊断”选项卡并选中“僵尸对象”。这并不是释放内存块,而是将它们变成“僵尸”,即只停留在周围以捕获试图访问它们的任何对象的对象。当然,这会导致内存消耗非常快,所以不应该永久打开。有关更多信息: