2015-09-21 8 views
14

Con il rilascio di iOS 9, stiamo visualizzando diversi rapporti di arresto anomalo per quello che sembra essere un bug dal lato Apple di iOS 9. Questo sta accadendo su tutti i tipi di dispositivo (iPhone, iPad e iPod). Sto cercando di scoprire perché questo potrebbe accadere e se c'è qualcosa che posso fare per aggirare il problema. Questo stack viene segnalato attraverso il nostro sistema di segnalazione degli arresti anomali (Crashlytics), quindi sfortunatamente non ho passaggi o codici riproducibili, ma cercherò di rispondere a qualsiasi domanda nel miglior modo possibile. Lo stack è la seguente:iOS 9 Blocco in _prepareForCAFlush con EXC_BAD_ACCESS KERN_INVALID_ADDRESS

Thread : Crashed: com.apple.main-thread 
0 libobjc.A.dylib    0x34a27ad6 objc_msgSend + 21 
1 CoreFoundation     0x230d3db9 -[__NSArrayM dealloc] + 148 
2 libobjc.A.dylib    0x34a34f67 objc_object::sidetable_release(bool) + 150 
3 libobjc.A.dylib    0x34a353a9 (anonymous namespace)::AutoreleasePoolPage::pop(void*) + 388 
4 CoreFoundation     0x230cbfa9 _CFAutoreleasePoolPop + 16 
5 UIKit       0x27523cd9 _prepareForCAFlush + 312 
6 UIKit       0x2752886b _beforeCACommitHandler + 10 
7 CoreFoundation     0x2317a509 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 20 
8 CoreFoundation     0x2317880d __CFRunLoopDoObservers + 280 
9 CoreFoundation     0x23178c3f __CFRunLoopRun + 958 
10 CoreFoundation     0x230cc249 CFRunLoopRunSpecific + 520 
11 CoreFoundation     0x230cc035 CFRunLoopRunInMode + 108 
12 GraphicsServices    0x2c182ad1 GSEventRunModal + 160 
13 UIKit       0x272e18a9 UIApplicationMain + 144 
14 APPNAMEHERE     0x000ec967 main (main.m:14) 
+0

Problema simile qui. Quale fornitore di analisi usi? – Yerk

+0

Yerk, usiamo Google Analytics per eventi app/ecc. e Twitter Fabric Crashlytics per i rapporti sugli arresti anomali. – Josh

+0

sembra essere un bug di Crashlytics: https://stackoverflow.com/a/31016107/4975761 – wj2061

risposta

-3

sembra essere che colpisce solo i dispositivi con processori a 32 bit A5 e A6 - iPod 5a Gen, iPhone 4S/5/5C, iPad 2/Mini). Nessun repro dalla nostra parte neanche. Questi arresti anomali sono iniziati e sono aumentati con il rilascio e l'adozione di iOS 9. iOS v9.0.1 non sembra risolverlo.

+0

Secondo Fabric, il 40% degli arresti appartengono a iPhone 6 e il 25% a iPhone 6 più – Efesus

+0

Solo per confermare, che è anche a 64 bit, dato che abbiamo molti iPhone 6 e 6 plus con questo crash. Sto ancora cercando di capirlo ... – Josh

1

Si è verificato un arresto anomalo con una traccia dello stack simile e, dopo una lunga indagine, è stato rilevato che era correlato a un altro arresto anomalo; correggendo ciò anche risolto questo, tuttavia non sono ancora sicuro di come siano correlati i due crash.

Ecco i dettagli circa l'altro incidente:

Abbiamo avuto una chiamata di funzione in uno dei nostri metodi come

AudioServicesAddSystemSoundCompletion(self.soundID, 
             [[NSRunLoop currentRunLoop] getCFRunLoop], 
             kCFRunLoopDefaultMode, 
             AudioServicesSystemSoundCompletion, 
             (void *)CFBridgingRetain(self)); 

dove AudioServicesSystemSoundCompletion sembrava

void AudioServicesSystemSoundCompletion(SystemSoundID ssID, void *clientData) { 
    AudioServicesRemoveSystemSoundCompletion(ssID); 
    CFRelease(clientData); 
} 

esecuzione che chiamata di funzione due o più volte contemporaneamente ha causato l'arresto anomalo dell'app. Abbiamo risolto questo problema passando NULL anziché (void *) CFBridgingRetain (self) e rimuovendo CFRelease (clientData); linea.

Da questa correzione non vediamo più l'arresto "_prepareForCAFlush".

Si noti inoltre che, secondo Crashlytics, il dispositivo aveva un utilizzo della memoria molto elevato ogni volta che l'arresto si è riprodotto.

Spero che questo aiuti!

+0

Stiamo testando alcune teorie su ciò che stai suggerendo qui, e se funziona, lo farò sapere a tutti. Non stiamo facendo nulla di esattamente come sei qui, ma sembra che qualcosa sia stato rilasciato nei momenti sbagliati in alcuni dei nostri codici, e questa potrebbe essere la causa. Grazie per la risposta, e spero di avere risultati definitivi in ​​circa una settimana. Aggiornamento – Josh

+0

. I nostri tentativi di correzione non hanno finora risolto il problema. È possibile che le cose che abbiamo provato abbiano aiutato alcuni, ma non in modo significativo. Sto scommettendo che qualcosa sta "perdendo" e questo è un crash quando si tenta di pulire le cose. Nessuna idea reale come mai scoprire cosa o perché .... – Josh

+0

Che dire adesso? Abbiamo riscontrato lo stesso problema e non ho idea di cosa lo stia causando. –

1

Per me il problema era che stavo mostrando e chiudendo la tastiera quando l'applicazione era ridotta a icona.

[self.textView becomeFirstResponder]; 
    [self.textView resignFirstResponder]; 

Ho eseguito il codice sopra nell'evento applicationWillResignActive. rimuovendo questo codice è stato risolto il crash.

1

Anche io sto affrontando questo problema e penso di aver trovato ciò che potrebbe causarlo. Siete ragazzi per caso usando SDWebImage? Perché è l'unico posto in cui ho trovato che CFRunLoopRun() viene chiamato e anche altre persone si sono lamentate su: Dead thread ticket -> App Crash