2016-11-18 61 views
10

Od 8 listopada 2016 r. Odnotowaliśmy gwałtowny wzrost liczby awarii z WebThread. Nie wiemy, co powoduje awarię.Rozbiło: WebThread - EXC_BAD_ACCESS KERN_INVALID_ADDRESS

Mamy internetowe artykuły i reklamy w aplikacji. Nie mieliśmy żadnej wersji aplikacji. Nie było żadnych znaczących zmian w internecie ani reklamach.

Ponieważ awarie zdarzają się na ekranach bez artykułów, myślimy, że dzieje się to na reklamach.

Czy ktoś jeszcze to widział? Wszelkie myśli, pomysły, cokolwiek?

Ślad stosu:

Crashed: WebThread 
0 WebCore      0x184b7e47c WTF::HashMap<WTF::String, WebCore::ApplicationCacheGroup*, WTF::StringHash, WTF::HashTraits<WTF::String>, WTF::HashTraits<WebCore::ApplicationCacheGroup*> >::remove(WTF::String const&) + 48 
1 WebCore      0x184b7abbc WebCore::ApplicationCacheStorage::cacheGroupDestroyed(WebCore::ApplicationCacheGroup*) + 52 
2 WebCore      0x184b7abbc WebCore::ApplicationCacheStorage::cacheGroupDestroyed(WebCore::ApplicationCacheGroup*) + 52 
3 WebCore      0x184b70628 WebCore::ApplicationCacheGroup::~ApplicationCacheGroup() + 56 
4 WebCore      0x184b70b10 WebCore::ApplicationCacheGroup::~ApplicationCacheGroup() + 12 
5 WebCore      0x184b72334 WebCore::ApplicationCacheGroup::disassociateDocumentLoader(WebCore::DocumentLoader*) + 184 
6 WebCore      0x184a024a0 WebCore::ApplicationCacheHost::~ApplicationCacheHost() + 48 
7 WebCore      0x184a01ad0 WebCore::DocumentLoader::~DocumentLoader() + 168 
8 WebKitLegacy     0x185976ba8 WebDocumentLoaderMac::~WebDocumentLoaderMac() + 84 
9 WebCore      0x184e30a78 WebCore::FrameLoader::detachFromParent() + 324 
10 WebKitLegacy     0x1859e0b08 __29-[WebView(WebPrivate) _close]_block_invoke + 348 
11 WebCore      0x1857842c4 HandleRunSource(void*) + 368 
12 CoreFoundation     0x180ab509c __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 24 
13 CoreFoundation     0x180ab4ab0 __CFRunLoopDoSources0 + 412 
14 CoreFoundation     0x180ab2830 __CFRunLoopRun + 724 
15 CoreFoundation     0x1809dcc50 CFRunLoopRunSpecific + 384 
16 WebCore      0x1849ce108 RunWebThread(void*) + 456 
17 libsystem_pthread.dylib  0x180763b28 _pthread_body + 156 
18 libsystem_pthread.dylib  0x180763a8c _pthread_body + 154 
19 libsystem_pthread.dylib  0x180761028 thread_start + 4 
+0

Czy korzystasz z zewnętrznego zestawu reklam/pakietu SDK? – shallowThought

+0

Czy tworzysz UIWebView w głównym wątku? Jeśli nie, spróbuj. – MikeJRamsey56

+0

@shallowPrzypomyślamy, że używamy sieci reklamowych DFP i FB. Tak, szukamy danych reklamowych. – kthorat

Odpowiedz

0

Dwie gałęzie idei dwóch zbadać:

https://stackoverflow.com/a/32078697/3419541

może być tak, że użytkownik jest zamknięcie widoku internetowej tuż przed próbuje wysłać delegata oddzwanianie i ulega awarii, ponieważ nie istnieje.

https://stackoverflow.com/a/31673840/3419541

zgadywania coś jest nie tak z buforowanie zasobu.

+0

Jak już powiedziałem w pytaniu - Widzimy awarie, w których nie mamy widoków na WWW. Awarie nie ograniczają się do aplikacji WebView. Przerywa również ładowanie strony internetowej i usuwanie delegata. – kthorat

0

Po prostu, awarie, których doświadczasz, są spowodowane wyciekiem pamięci.

Zmienna lub obiekt próbuje uzyskać dostęp do pamięci ograniczonej, co spowoduje awarię. Domyślam się, że jeden z używanych frameworków reklamowych/interfejsów API nie obsługiwał aktualizacji iOS 10.1.1 (Build 14B100), która pojawiła się 31 października 2016 r. Może to być informacja o awarii.

Przyszło mi również do głowy, że zdarza się to podczas jakiegoś wywołania funkcji zamknięcia/wyjścia. Jeśli tak, to musisz odpowiednio zwolnić obiekty, zmienne i wszystko, co zostało przyporządkowane do pamięci, podając . Jeśli twój kod lub program zwalnia wszystko we właściwy sposób, to jest to framework reklamowy/API powodujący twoje problemy.

Pozdrawiam!

+0

Widzimy awarie we wszystkich wersjach iOS. Sprawdziliśmy wycieki pamięci i analizę wykresów pamięci, wszystko wydaje się dobrze. – kthorat

1

Odpowiadając na moje własne pytanie, aby dodać więcej szczegółów niż w obszarze komentarzy.
Brak oznaczenia jako udzielonego, ponieważ nie mam rozwiązania.

Niestety, nie udało się rozwiązać problemu. Na szczęście wskaźnik zderzenia spadł po 2-3 dniach.

Po spędzeniu 3 dni byliśmy przekonani, że jest to związane z reklamami Google. Jednakże, dlaczego wskaźnik awarii wzrastał i spadał, wciąż pozostaje dla nas tajemnicą.

Niektóre notatki/konkluzja:

  • Czy robimy coś głupiego przypadku prośby/obsługi reklam?
    • Możliwe, ale szanse są bardzo niewielkie, jak miało to miejsce w przypadku istniejącego stabilnego wydania.
  • Czy dzieje się to z konkretnymi reklamami?
    • Stawka awaryjna spadła, ponieważ nie wyświetlamy reklam (y) więcej?
  • Zespół GoogleAds przybył na ratunek i zachowywał się jak nic się nie stało? ponieważ ... :)
  • Not a new issue - Crashlytics pokazywał pierwsze wystąpienie tego typu awarii było kilka miesięcy wcześniej.