web-dev-qa-db-fra.com

Arrêt de l'application avec EXC_RESOURCE, exception WAKEUPS sur iOS 8 GM

Est-ce que quelqu'un sait ce qu'est ce genre d'exception sur iOS 8?

=== du rapport de crash ===

Exception Type: EXC_RESOURCE
Exception Subtype: WAKEUPS
Exception Message: (Limit 150/sec) Observed 206/sec over 300 secs
Triggered by Thread: 14

Semble se produire uniquement sur iOS 8 ... Notre application est fermée de manière assez aléatoire à des intervalles arbitraires à cette exception ..

Tous les indices sont les bienvenus. Merci!

47
Coder

Votre application envoie assez souvent une commande de réactivation à un thread particulier de l'application - apparemment en moyenne 206 fois par seconde. Les threads d'arrière-plan dans iOS 8 ont une limite stricte sur le nombre de fois que vous pouvez exécuter un cycle de veille/veille sur chaque thread par seconde, et avoir un nombre élevé ici est généralement une indication que quelque chose ne va pas/est inefficace dans votre gestion des threads.

Sans voir votre code, je vous recommande de vérifier vos algorithmes C++ pour les appels de veille/veille ou de multithread le processus d'arrière-plan pour démarrer de nouveaux threads à chaque cycle.

Ray Wenderlich a un tutoriel fantastique sur le système d'Apple pour le multithreading, Grand Central Dispactch, qui pourrait également être une bonne ressource pour vous: http://www.raywenderlich.com/60749/grand-central-dispatch-in-) profondeur-partie-1

19
Ryan Kreager

En utilisant Xamarin, nous avons également rencontré ce problème. Nous utilisions 4 SemaphoreSlim qui attendaient en même temps trop longtemps. Le remplacement du SemaphoreSlim par une autre synchronisation primitive (AutoResetEvent dans notre cas pour simuler un sémaphore de 1 élément) a résolu le problème.

2
Alexandre Emond

Dans mon cas sur ios 9.1, cela est déclenché par le thread 2 qui semble être un travailleur pour le pilote GLES car je recherche dans les sources du projet, je ne vois aucune référence à 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

Voir ceci: Problèmes/plantages iOS 7 et OpenGL J'ai déposé le bogue 23389472 auprès d'Apple, car dans mon cas, ce n'est pas un thread que j'ai créé ou un code tiers, et, par conséquent, ce est très probablement pas mon bug. En bout de ligne: si le fil incriminé est le vôtre (qui inclut évidemment un logiciel tiers), la réponse de Ryan s'applique. Sinon, vous devez soit contacter Apple et/ou, en attendant, rechercher une solution de contournement.

0
Anton Tropashko