Мы испытываем сбои при разборе / создании экземпляра DateTime на Android в кроссплатформенном приложении на основе Xamarin.Сбои происходят только на устройствах Samung, в основном S8, S8 + и Note8 с Android 8 и 9. К сожалению, трассировки стека в отчетах о сбоях состоят только из нескольких строк.К сожалению, невозможно связаться с пользователем, чтобы получить больше информации, потому что у нас нет никакой информации о том, кто это.
Существуют различные проявления проблемы, все в некоторой степени связанные:
Конструктор DateTime вызывается с недопустимыми параметрами
System.ArgumentOutOfRangeException: Year, Month, and Day parameters describe an un-representable DateTime.
Module "System.DateTime", line 0, in DateToTicks
DateToTicks(System.Int32 year, System.Int32 month, System.Int32 day)
Module "System.DateTime.", line 0, in ctor
ctor(System.Int32 year, System.Int32 month, System.Int32 day, System.Int32 hour, System.Int32 minute, System.Int32 second)
Module "System.Threading._ThreadPoolWaitCallback", line 0, in PerformWaitCallback
PerformWaitCallback()
NullReferenceException в конструкторе DateTime
System.NullReferenceException: Object reference not set to an instance of an object
Module "System.DateTime.", line 0, in ctor
ctor(System.Int32 year, System.Int32 month, System.Int32 day, System.Int32 hour, System.Int32 minute, System.Int32 second)
Module "System.Threading._ThreadPoolWaitCallback", line 0, in PerformWaitCallback
PerformWaitCallback()
Однако существуют также некоторые связанные сбоиэто указывает на библиотеку JSON
исключение NullReferenceException в Json DateTimeParser ParseZone
System.NullReferenceException: Object reference not set to an instance of an object
Module "Newtonsoft.Json.Utilities.DateTimeParser", line 0, in ParseZone
ParseZone(System.Int32 start)
Module "Newtonsoft.Json.Utilities.DateTimeParser", line 0, in ParseTimeAndZoneAndWhitespace
ParseTimeAndZoneAndWhitespace(System.Int32 start)
Module "System.Threading._ThreadPoolWaitCallback", line 0, in PerformWaitCallback
PerformWaitCallback()
IndexOutOfRangeException в Json DateTimeParser Parse2Digit
1025 *
NullReferenceException в Json DateTimeParser ParseChar
System.NullReferenceException: Object reference not set to an instance of an object
Module "Newtonsoft.Json.Utilities.DateTimeParser", line 0, in ParseChar
ParseChar(System.Int32 start, System.Char ch)
Module "System.Threading._ThreadPoolWaitCallback", line 0, in PerformWaitCallback
PerformWaitCallback()
Это только некоторые отчеты о сбоях, есть еще пара, но все они идут в одном направлении.
то, что я пробовал до сих пор:
- Исследовал наш код и код библиотеки с открытым исходным кодом, которые могут быть причиной проблемы
- Поддельные ответы сервера для возврата бесчисленных разновидностей допустимых / недействительных значений даты
- Написал тестовое приложение, которое анализирует бесчисленные разновидности действительных / недействительных значений даты
что у меня естьвыяснили до сих пор:
- Я вообще не могу воспроизвести проблему
- Как уже упоминалось выше, она появляется только на устройствах Samsung * 8
- Это не происходит на другихУстройства Android
- Это также не происходит в приложениях для iOS или Windows
- В нашем собственном коде вряд ли возникнет проблема, поскольку мы не используем эти конструкторы (и редко обрабатывают значения даты и времени вручную полностью)
Кто-нибудь сталкивался с какой-либо подобной проблемой или имеет представление, в каком направлении я могу продолжать смотреть?Я совершенно невежественен и буду признателен за любые подсказки.