使用EXC_资源关闭应用程序,iOS 8 GM上出现唤醒异常

使用EXC_资源关闭应用程序,iOS 8 GM上出现唤醒异常,ios,crash,report,ios8,shutdown,Ios,Crash,Report,Ios8,Shutdown,有人知道iOS 8上的这种异常是什么吗 ==来自崩溃报告=== Exception Type: EXC_RESOURCE Exception Subtype: WAKEUPS Exception Message: (Limit 150/sec) Observed 206/sec over 300 secs Triggered by Thread: 14 似乎只发生在iOS 8上。。。除此之外,我们的应用程序在任意时间间隔内随机关闭 欢迎提供任何线索。谢谢 您的应用程序经常向应用程序中的特定线程

有人知道iOS 8上的这种异常是什么吗

==来自崩溃报告===

Exception Type: EXC_RESOURCE
Exception Subtype: WAKEUPS
Exception Message: (Limit 150/sec) Observed 206/sec over 300 secs
Triggered by Thread: 14
似乎只发生在iOS 8上。。。除此之外,我们的应用程序在任意时间间隔内随机关闭


欢迎提供任何线索。谢谢

您的应用程序经常向应用程序中的特定线程发送唤醒命令,显然平均每秒发送206次。iOS 8中的后台线程对每秒可以在每个线程上运行睡眠/唤醒循环的次数有严格限制,这里的计数过高通常表明线程管理有问题/效率低下

不看你的代码,我的建议是检查C++的睡眠/唤醒调用算法,或者多线程后台进程来启动每个线程的新线程。


Ray Wenderlich有一个关于苹果多线程系统的精彩教程,Grand Central Dispacch,它可能也是一个很好的资源:

使用Xamarin,我们也得到了这个问题。我们使用了4个信号量lim,它们同时等待的时间太长了。将信号量LIM替换为另一个基本同步(在我们的例子中,AutoResteEvent模拟一个1项的信号量)修复了这个问题。

在我的例子中,在ios 9.1上,这是由线程2触发的 似乎是司机的工作人员 因为在我看不到的项目源中搜索 对GPUTools的任何引用

Thread 2 name:  gputools.smt_poll.0x145722df0
Thread 2 Attributed:
0   libsystem_kernel.dylib          0x000000019a8b7440 __semwait_signal + 8
1   libsystem_c.dylib               0x000000019a7c9e2c nanosleep + 212
2   libsystem_c.dylib               0x000000019a7c9d4c 0x19a7bc000 + 56652
3   GPUToolsCore                    0x0000000100ba0ae0 0x100b98000 + 35552
4   libsystem_pthread.dylib         0x000000019a97fb28 _pthread_body + 156
5   libsystem_pthread.dylib         0x000000019a97fa8c _pthread_body + 0
6   libsystem_pthread.dylib         0x000000019a97d028 thread_start + 4
见此: 我已经向苹果公司提交了错误23389472, 因为在我的情况下,这不是我或第三方代码创建的线程, 因此,这很可能不是我的错误。 底线是:如果违规线程是你的(显然包括第三方软件),那么Ryan的答案适用。否则你要么
联系苹果和/或同时寻找解决办法。

这方面运气好吗?我得到了相同的错误,罪魁祸首是:
thread4 name:WebThread
我有完全相同的错误。使用Xamarin和OpenTok时,我们的应用程序出现了类似的问题,可能与Ryan在下面所说的有关。基本上,我们使用SKAction PlaySoundFileName播放音效:但有时,随机地,它不会播放任何声音,除非你退出应用程序并稍后恢复,然后它一次播放所有声音,这表明有什么东西阻止了这些动作。。。如果你继续在这种状态下玩一段时间,你最终会看到这个崩溃…iOS9添加了异常说明:非致命性条件(这不是崩溃),但它似乎被逐出所有相同的(我不完全确定:我一直在iOS9上被逐出,但只看到过一次这个崩溃报告).有没有办法控制和限制特定线程上的唤醒调用数?因为,正在运行的线程显然会在完成任务后停止,所以没有必要经常唤醒它!你能提供一个代码示例来帮助我更好地理解这个问题吗?在后台线程中使用@synchronized会导致这个问题吗?