Закрытие приложения с EXC_RESOURCE, исключение WAKEUPS на iOS 8 GM
Кто-нибудь знает, что такое исключение на 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... Наше приложение закрывается довольно случайным образом с произвольными интервалами с этим исключением.
Любые подсказки приветствуются. Спасибо!
Ответы
Ответ 1
Ваше приложение часто посылает команду пробуждения в конкретный поток приложения - видимо, в среднем 206 раз в секунду. Фоновые потоки в iOS 8 имеют жесткое ограничение на то, сколько раз вы можете запускать цикл sleep/wake для каждого потока в секунду, а наличие большого количества здесь обычно является признаком того, что в управлении потоками что-то не так/неэффективно.
Не видя свой код, я рекомендую вам проверить свои алгоритмы С++ для вызовов сна/бодрствования или многопоточность фонового процесса для запуска новых потоков в каждом цикле.
У Ray Wenderlich есть фантастический учебник по системе Apple для многопоточности, Grand Central Dispactch, который также может быть хорошим ресурсом для вас: http://www.raywenderlich.com/60749/grand-central-dispatch-in-depth-part-1
Ответ 2
Используя Xamarin, мы тоже получили эту проблему. Мы использовали 4 SemaphoreSlim, которые ждали в то же время в течение слишком длительного периода времени. Замена SemaphoreSlim другой примитивной синхронизацией (AutoResetEvent в нашем случае для имитации семафора из 1 элемента) исправила проблему.
Ответ 3
В моем случае на ios 9.1 это отключено нитью 2
который, как представляется, является одним из рабочих для драйвера GLES
вызвать поиск по источникам проекта, которых я не вижу
любые ссылки на 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
Смотрите это:
iOS 7 и проблемы/сбои OpenGL
Я подал ошибку 23389472 с яблоком,
потому что в моем случае это не поток, который я создал или какой-то сторонний код,
и, таким образом, это, скорее всего, не моя ошибка.
Итог: если оскорбительная нить ваша (что включает стороннее программное обеспечение, очевидно), то ответ Райана применяется. В противном случае у вас есть
связаться с Apple и/или, в то же время, найти обходное решение.