2014-10-14 13 views
7

Sono alla fine, sto diventando uno strano incidente che si verifica solo quando l'app viene avviata dal Centro notifiche. Toccando una notifica locale (nel lato della notifica) o una chiamata a extensionContext: openURL: completionHandler (dal mio widget Today) avvierà l'applicazione con uno schema customURL.arresto anomalo quando si avvia l'app dal Centro di notifica

Quando l'applicazione è in esecuzione (avvio a caldo), nessun problema, funziona come pubblicizzato. Quando uccido l'app (nel commutatore di attività) e poi provo a lanciarlo attraverso il Centro notifiche (avvio a freddo), ottengo il rapporto di arresto anomalo di seguito.

Ho cercato basso e alto per qualsiasi cosa, non riesco a trovarlo. Questo accade solo su dispositivi iOS8, i dispositivi iOS7 non hanno alcun problema (con il lancio della notifica, ovviamente senza widget Today)

Qualcuno ha visto questo ??

grazie!

Date/Time:   2014-10-14 18:16:39.924 -0400 
Launch Time:   2014-10-14 18:16:38.667 -0400 
OS Version:   iOS 8.0.2 (12A405) 
Report Version:  105 

Exception Type: EXC_BAD_ACCESS (SIGSEGV) 
Exception Subtype: KERN_INVALID_ADDRESS at 0x000000016a4cbeb8 
Triggered by Thread: 0 

Thread 0 name: Dispatch queue: com.apple.main-thread 
Thread 0 Crashed: 
0 libobjc.A.dylib     0x0000000195ebbbd0 objc_msgSend + 16 
1 UIKit       0x000000018a27d840 -[UIApplication workspaceDidEndTransaction:] + 216 
2 FrontBoardServices    0x000000018da7563c __31-[FBSSerialQueue performAsync:]_block_invoke + 24 
3 CoreFoundation     0x000000018582a35c __CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__ + 16 
4 CoreFoundation     0x0000000185829464 __CFRunLoopDoBlocks + 308 
5 CoreFoundation     0x0000000185827a88 __CFRunLoopRun + 1752 
6 CoreFoundation     0x0000000185755660 CFRunLoopRunSpecific + 392 
7 UIKit       0x000000018a05f4fc -[UIApplication _run] + 548 
8 UIKit       0x000000018a05a4f4 UIApplicationMain + 1484 
9 therichest      0x00000001001caa8c main (main.m:16) 
10 libdyld.dylib     0x0000000196516a04 start + 0 
+0

Sei riuscito a risolvere questo @Mike? Sto vedendo la stessa cosa in un paio di app in the wild, ma non riesco a replicarla localmente inviando una notifica push all'app. – siburb

+0

Posso replicarlo in modo coerente con i passaggi precedenti. L'altro fatto divertente è che solo iOS8. Sto aggiornando alla v8.1 e vediamo se viene risolto. – Mike

+0

Spero che sia stato. Non ho ancora visto una singola istanza di questo problema nelle nostre app in iOS 8.1 (ancora), ma potrebbe essere troppo presto per dirlo in modo definitivo. Spero che i tuoi test possano confermare. – siburb

risposta

7

Il proprio codice o una libreria di terze parti in uso sta ruotando manualmente il runloop. Questo sta causando -workspaceDidEndTransaction: essere chiamato ri-entrantly e attiva un utilizzo dopo averlo liberato. Se si imposta un punto di interruzione su - [NSRunLoop runMode: beforeDate:] e - [NSRunLoop runUntilDate:], dovrebbe colpire con il codice di colpevolezza sul frame dello stack precedente.

Mentre la rotazione manuale del ciclo di esecuzione non è mai consigliata, se è possibile ritardarla fino a quando l'applicazione non ha terminato l'avvio (tutte le chiamate delegate dell'app di lancio ricevute) è necessario evitare l'arresto.

+0

sì, ce l'hai. Questo è stato difficile. Grazie! – Mike

+0

@ Mike Come l'hai risolto? era una lib di terze parti? –

+0

ciò che @Dex ha menzionato è giusto. Stavo usando una libreria di terze parti che girava manualmente il ciclo di esecuzione. Disabilitare quella libreria ha risolto il mio problema. Da allora ho anche informato lo sviluppatore della biblioteca. – Mike

Problemi correlati