Ho un crash report da un'applicazione dal vivo:iOS Crash in utente-avviato-qos.overcommit. Cosa potrebbe creare questa coda?
Crashed: com.apple.root.user-initiated-qos.overcommit
0 libobjc.A.dylib 0x21d486c8 objc_release + 7
1 libobjc.A.dylib 0x21d493a9 (anonymous namespace)::AutoreleasePoolPage::pop(void*) + 388
2 libdispatch.dylib 0x22110739 _dispatch_root_queue_drain + 1896
3 libdispatch.dylib 0x2210ffcd _dispatch_worker_thread3 + 96
4 libsystem_pthread.dylib 0x222c5b29 _pthread_wqthread + 1024
5 libsystem_pthread.dylib 0x222c5718 start_wqthread + 8
Il pezzo più utile di informazioni sembra essere il nome della coda che l'incidente si è verificato: com.apple.root.user-initiated-qos.overcommit
. Ho controllato tutto il mio codice e uso la coda principale, una coda di background del sistema (cioè non qo avviata dall'utente), o code nominate che io stesso creo.
Ho altri SDK inclusi con la mia app, quindi c'è una buona possibilità che quegli SDK stiano lavorando in questa coda. Ma prima di presupporre che questo sia il caso, mi chiedevo se ci sono dei motivi comuni per cui iOS stesso invierà il lavoro su questa coda, il che potrebbe aiutarmi a isolare le aree della mia base di codici per un'osservazione più approfondita.
ho capito dalla ricerca (WWDC 2015 - Session 718) che la user-initiated-qos
qualità di impostazione del servizio può essere applicato automaticamente a una coda in cui il lavoro è dispatch_async
su una coda che non ha una specifica 'Quality of Service' impostazione, dal thread principale (utente interattivo qos). Ma come descritto sopra, non penso di farlo mentre chiamo tutte le mie code.
Quindi qualcuno sa se o quando iOS utilizza la coda com.apple.root.user-initiated-qos.overcommit
?
Mi piacerebbe sapere di più su questa coda overcommit pure. Abbiamo molti incidenti una tantum che sembrano avere questo, ma non riesco ancora a trovare lo scenario che lo sta causando. –