2014-12-23 24 views
7

Otrzymaliśmy kilka awarii z naszą aplikacją i chcieliśmy sprawdzić, czy któryś z was może mieć wgląd lub mieć podobne doświadczenia. Udostępniłem informacje o dzienniku awarii poniżej.Próba naprawienia awarii: QuartzCore - CA :: release_objects (X :: List <void const*> *)

Uruchamianie iOS 8.1. Przeszliśmy przez instrumenty, analizatory statyczne i wciąż staramy się wskazać problem.

QuartzCore 
CA::release_objects(X::List<void const*>*) 

13 
Crashed: Thread 
EXC_BAD_ACCESS KERN_INVALID_ADDRESS at 0x0042de0f48aa7488 


Thread : Crashed: Thread 
0 libobjc.A.dylib    0x0000000193debbdc objc_msgSend + 28 
1 CoreFoundation     0x0000000183561228 CFRelease + 524 
2 QuartzCore      0x0000000187788644 CA::release_objects(X::List<void const*>*) +   32 
3 QuartzCore      0x000000018778e498 -[CAAnimation dealloc] + 80 
4 libobjc.A.dylib    0x0000000193df1724 (anonymous namespace)::AutoreleasePoolPage::pop(void*) + 564 
5 libobjc.A.dylib    0x0000000193df2754 (anonymous namespace)::AutoreleasePoolPage::tls_dealloc(void*) + 72 
6 libsystem_pthread.dylib  0x00000001945fa3e0 _pthread_tsd_cleanup + 200 
7 libsystem_pthread.dylib  0x00000001945fa0ac _pthread_exit + 140 
8 libsystem_pthread.dylib  0x00000001945fb330 pthread_exit + 44 
9 Foundation      0x0000000184487000 -[NSObject(NSThreadPerformAdditions) performSelectorOnMainThread:withObject:waitUntilDone:] 
10 Foundation      0x0000000184555c24 __NSThread__main__ + 1096 
11 libsystem_pthread.dylib  0x00000001945fbe80 _pthread_body + 164 
12 libsystem_pthread.dylib  0x00000001945fbddc _pthread_body 
+1

Zobacz CFRelease() - oznacza to, że QuartzCore próbował zwolnić obiekt, który jest albo zerowy, albo został wcześniej wydany. Spróbowałbym uruchomić twoją aplikację z włączonymi Zombiesami - to może pomóc ci znaleźć problem (szukaj usłyszeć wiele porad, jak go włączyć). –

+0

Mam włączone Zombie, ale niestety nie było to zbyt pomocne. – Jon

+0

Co masz na myśli "nie było bardzo pomocne"? Czy masz na myśli tylko to, że nie możesz tego zrozumieć? Co właściwie mówi komunikat z dziennika Zombies? - Jest również całkiem jasne, że problematyczny kod obejmuje tutaj 'performSelectorOnMainThread: withObject: waitUntilDone:' i jakąś animację; nie możesz znaleźć i pokazać tego kodu? – matt

Odpowiedz

0

Problem polega na tym, że robisz jeden dodatkowy uwalnianie na obiekcie, który Core Animation nie spodziewałem, więc problem jest wprowadzane w kodzie, ale narażone gdy ramy animacja robi jej oczyścić fazę.

Aby rozwiązać ten problem, użyj opcji Profilowanie. Wybierz profiler alokacji i kliknij pozycję licznika rekordów w obszarze Konfiguracja uruchamiania dla alokacji sterty.

Następnie, gdy problem zostanie uderzony, będzie można zobaczyć historię alokacji, a jedno wydanie nie zostanie sparowane i zostało wydane z jednego z plików kodu źródłowego.