Мой последний выпуск дает сбой со скоростью около 99 на 1000 устройств, что значительно выше, чем выпуск до него. Новые сбои в libmonosgen представлены в двух вариантах:
Кластер 1: libmonosgen-2.0.so
signal 11 (SIGSEGV), code 2 (SEGV_ACCERR)
libmonosgen-2.0.so
*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
pid: 0, tid: 0 >>> com.dailybits.foodjournal <<<
backtrace:
#00 pc 0000000000192304 /data/app/com.dailybits.foodjournal-KapbLS3Zx20G2S79yI3CTw==/lib/arm/libmonosgen-2.0.so
Кластер 2: libmonosgen-2.0.so ( mono_class_get_flags)
signal 11 (SIGSEGV), code 2 (SEGV_ACCERR)
mono_class_get_flags
*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
pid: 0, tid: 0 >>> com.dailybits.foodjournal <<<
backtrace:
#00 pc 000000000014f310 /data/app/com.dailybits.foodjournal-rwLqwfyotHI-Ulk481Wk8g==/lib/arm64/libmonosgen-2.0.so (mono_class_get_flags)
Предварительный отчет выглядит зеленым, а в Центре приложений нет ни одного из этих сбоев, они отображаются только в Google Play.
Вопросы :
Кто-нибудь знает, что означают pid: 0 и tid: 0? Означает ли это, что эти сбои происходят до того, как код приложения загружен, или это не связано?
Если это не при запуске приложения, могу ли я как-нибудь выяснить, через какое время sh происходит? Или, что еще лучше, можно ли сопоставить сбои с журналами сеансов, сгенерированными приложением?
Есть ли способ настроить Play или приложение для сбора лучших трасс?
Подробности конфигурации ниже
(оба варианта сборки приводят к одной и той же проблеме)
Информация о версии
Microsoft Visual Studio Professional 2019
Version 16.4.2
VisualStudio.16.Release/16.4.2+29613.14
Microsoft .NET Framework
Version 4.8.03752
Xamarin 16.4.000.307 (d16-4@e031886)
Visual Studio extension to enable development for Xamarin.iOS and Xamarin.Android.
Xamarin.Android SDK 10.1.1.0 (d16-4/f2c9364)
Xamarin.Android Reference Assemblies and MSBuild support.
Mono: bef1e63
Java.Interop: xamarin/java.interop/d16-4@c4e569f
ProGuard: xamarin/proguard/master@905836d
SQLite: xamarin/sqlite/3.28.0@46204c4
Xamarin.Android Tools: xamarin/xamarin-android-tools/master@9f4ed4b
Изменить 2/17/2020
Некоторые из моих исследований на сегодняшний день:
- Похоже, libmonosgen содержит сборщик мусора Xamarin.
- SEGV_ACCERR - доступ запрещен для объекта платформы (объект IE уже удален). Хороший способ получить это, очевидно, состоит в том, чтобы иметь доступ к c объектам из нескольких потоков. Я думаю, это может означать, что один из потоков избавляется от лежащего в основе объекта Java, не сообщая среду выполнения Mono.
- Сторонние библиотеки, а также новые объекты Java (IE изменения в пользовательском интерфейсе элементы управления, которые я использую) являются подозрительными.
Я решил go с тонкой зубчатой расческой для всех изменений, отменить все обновления пакета и повторить их один раз. один за другим, пока релиз не начнет падать. Если мне не повезет, это займет несколько недель, но это должно сработать, чтобы выяснить, что вызывает крэ sh. Это также должно позволить мне довести мои новые функции до 100%, не вызывая резких сбоев для всех пользователей. Скрестив пальцы:)