В журнале аварий iOS Crashlytics отображается _прятно даже после загрузки битового кода dSYM на фабрику

Я довольно долго изучал сбои в нашем приложении и до сих пор не могу понять, почему Crashlytics не может символизировать некоторые сбои (3, если быть точным). На самом деле это текущие серьезные сбои приложения, и мы отчаянно ищем любые возможные подсказки.

Наше приложение имеет битовый код и позволяет загружать dSYM в Apple. Я попытался прочитать документ Crashlytics All about Missing dSYMs, вручную загрузить ZIP-файл dSYM из iTunesConnect, загрузить его на фабрику. После этого "скрытое" число сбоев продолжает расти, и проблема в том, что мы никогда не получаем предупреждение о отсутствующем dSYM в матрице, и оно не показывает отсутствие dSYM на странице настроек матрицы для сборки приложения, которую мы пытаемся исследовать.

Трассировка стека выглядит так: Трассировка сбоя стека

Любая помощь и предложения будут очень признательны! Спасибо!

1 ответ

Я не могу сказать вам, почему символика не удалась. Но, посмотрев на ваш отчет о сбое, я вспомнил несколько вещей, возможно, они могут как-то вам помочь.

Авария происходит внутри замыкания, которое каким-то образом использует UIWebView. После того, как что-то сделано с javascript, ресурсы освобождаются, именно тогда происходит сбой. Вы можете проверить последний код, названный здесь:

https://github.com/WebKit/webkit/blob/f43689c3ed50cd00bf76d5731983046b988e6efa/Source/WebCore/loader/cache/CachedResource.cpp

Ничего особенного там не происходит.

Я предполагаю, что входные переменные замыкания освобождаются рано. Даже если вы слепой, без рабочей символики, вы можете попытаться найти замыкания, инициирующие вызовы JavaScript, и проверить эти условия, например: [unowned self] in или аналогичные и попробуйте передать их в собственность. Это может привести к потере памяти, но вы можете проверить это перед выпуском.

Другие вопросы по тегам