Crashed: WebThread – EXC_BAD_ACCESS KERN_INVALID_ADDRESS

Desde el 8 de noviembre de 2016, hemos visto un aumento repentino de los lockings de WebThread. No sabemos qué está causando el crash.

Tenemos artículos y anuncios web en la aplicación. No tuvimos ninguna versión de la aplicación. No hubo cambios significativos en la web o los anuncios.

Dado que se producen colisiones en las pantallas sin artículos, creemos que está sucediendo en los anuncios.

¿Alguien más ve esto? ¿Alguna idea, idea o algo?

Rastro de la stack:

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 

Respondiendo a mi propia pregunta para agregar más detalles que el área de comentarios.
No marcado como respondido ya que no tengo solución.

Desafortunadamente, no pudimos resolver el problema. Afortunadamente, la tasa de choque descendió después de 2-3 días.

Después de pasar 3 días, estábamos seguros de que estaba relacionado con Google Ads. Sin embargo, la razón por la cual la tasa de crashs subió y bajó sigue siendo un misterio para nosotros.

Algunas notas / conclusión:

  • ¿Estamos haciendo algo estúpido al solicitar / manejar anuncios?
    • Posible, pero las posibilidades son muy delgadas, ya que estaba sucediendo con la versión estable existente.
  • ¿Esto está sucediendo a anuncios específicos?
    • ¿La tasa de fallos disminuyó porque no publicamos ese (los) anuncio (s)?
  • El equipo de GoogleAds vino a rescatar y actuó como si nada hubiera pasado? porque… 🙂
  • No es un problema nuevo: Crashlytics estaba mostrando la primera aparición de este tipo de crash meses atrás.

Dos twigs de ideas dos exploran:

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

puede ser que el usuario está cerrando la vista web justo antes de intentar enviar una callback delegada y se cuelga porque no existe.

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

Adivinar que algo va mal con el almacenamiento en caching de un recurso.

En pocas palabras, el locking que está experimentando es debido a una pérdida de memory.

Una variable u object está intentando acceder a la memory restringida, lo que provocará este locking. Mi conjetura es que uno de los frameworks publicitarios / API que está utilizando no manejó la actualización de iOS 10.1.1 (Build 14B100) que salió el 31 de octubre de 2016. Esta podría ser la base de su crash.

También se me ocurrió que esto parece estar sucediendo durante algún tipo de llamada a una function de cierre / salida. Si es así, ASEGÚRESE de que está liberando objects, variables y cualquier otra cosa que haya sido asignada a la memory correctamente. Si su código o progtwig está liberando todo de la manera correcta, entonces es el marco publicitario / API que causa sus problemas.

¡Aclamaciones!