2016-05-18 75 views
0

在我的iPad应用程序中,我经常收到崩溃报告,但例外情况为EXC_RESOURCE和子类型WAKEUPS。 然而奇怪的是,消息说(Limit 150/sec) Observed 0/sec over 300 sec如何避免异常EXC_RESOURCE - WAKEUPS?

它怎么能成为一个例外时,它观察到0唤醒/秒? - 我如何避免它?

我关心的原因是报告的生成延迟了应用程序中的一些时间关键线程。 我们主要是从麦克风录音和同时播放音频,并且生成报告时,音频会断断续续。

该异常总是由3个线程之一触发:主线程,AURemoteIO: IOThreadcom.apple.coreaudio.AQClient。请参见下面的报告片段:

Hardware Model:  iPad2,5 
Code Type:   ARM (Native) 
Parent Process:  debugserver [3109] 

Date/Time:   2016-05-18 12:15:59.59 +0200 
Launch Time:   2016-05-18 12:11:44.44 +0200 
OS Version:   iOS 9.1 (13B143) 
Report Version:  104 

Exception Type: EXC_RESOURCE 
Exception Subtype: WAKEUPS 
Exception Message: (Limit 150/sec) Observed 0/sec over 300 secs 
Exception Note: NON-FATAL CONDITION (this is NOT a crash) 
Triggered by Thread: 0 

Thread 0 name: Dispatch queue: com.apple.main-thread 
Thread 0 Attributed: 
0 CoreFoundation     0x25ef8c4e 0x25ef6000 + 11342 
1 CoreFoundation     0x25fab760 0x25ef6000 + 743264 
... 

Thread 10 name: AURemoteIO::IOThread 
Thread 10: 
0 libsystem_kernel.dylib   0x382acff0 mach_msg_trap + 20 
1 libsystem_kernel.dylib   0x382acdf4 mach_msg + 40 
2 AudioToolbox     0x2544ec50 AURemoteIO::IOThread::Run() + 104 
3 AudioToolbox     0x25452500 AURemoteIO::IOThread::Entry(void*) + 8 
4 AudioToolbox     0x25369fee CAPThread::Entry(CAPThread*) + 186 
5 libsystem_pthread.dylib   0x3836385a _pthread_body + 138 
6 libsystem_pthread.dylib   0x383637ce _pthread_start + 110 
7 libsystem_pthread.dylib   0x38361724 thread_start + 8 

... 

Thread 12 name: com.apple.coreaudio.AQClient 
Thread 12: 
0 libsystem_kernel.dylib   0x382acff0 mach_msg_trap + 20 
1 libsystem_kernel.dylib   0x382acdf4 mach_msg + 40 
2 CoreFoundation     0x25fad8c4 __CFRunLoopServiceMachPort + 136 
3 CoreFoundation     0x25fabc4c __CFRunLoopRun + 1036 
4 CoreFoundation     0x25eff118 CFRunLoopRunSpecific + 520 
5 CoreFoundation     0x25efef04 CFRunLoopRunInMode + 108 
6 AudioToolbox     0x253810b4 GenericRunLoopThread::Entry(void*) + 132 
7 AudioToolbox     0x25369fee CAPThread::Entry(CAPThread*) + 186 
8 libsystem_pthread.dylib   0x3836385a _pthread_body + 138 
9 libsystem_pthread.dylib   0x383637ce _pthread_start + 110 
10 libsystem_pthread.dylib   0x38361724 thread_start + 8 

回答

0

主要困惑是Observed 0/sec声明,但我发现,这个数字是错误的。当在更新更快的iPad上运行相同的代码时,它会突然在这里显示一个数字(200-400),所以这只是由于iPad速度慢导致无法计算出数字。

其次,我发现确实有一个线程开始和停止的方式太频繁,但它是而不是触发错误的那个,所以这使得定位困难得多。