Странный сбой после быстрой миграции 4.2 - PullRequest
0 голосов
/ 09 июля 2019

Приложение аварийно завершает работу, иногда при запуске приложения.

Недавно мы обновили наше приложение с swift 4 до swift 4.2 с xcode 10.2, после этой миграции начались случайные сбои.

NSException: - [__ NSCFNumber objectForKey:]: нераспознанный селектор, отправленный экземпляру 0x8000000000000000

- [_ NSCoreDataTaggedObjectID objectForKey:]: нераспознанный селектор, отправленный экземпляру 0x8000000000000000

в Xcode 10.1 этой проблемы не было. в некоторых ответах на переполнение стека предлагается изменить уровень оптимизации (Optimization для оптимизации для скорости -O), но мы не уверены, что исправим эту проблему.

private var recentPresence: [String: AwUserPresenceAppStatus] = [:]

func getPresence(forUserId userId: String) -> AwUserPresenceAppStatus? {
        if let recent = recentPresence[userId] {
            return recent
        } else if let cloned = PresenceCloner.shared.getPresence(forUserId: userId) {
            return cloned
        } else {
            return nil
        }
    }

Это функция, вызывающая проблему. он принимает string и пытается найти значение в недавнем присутствии dictionary. и словарь, и функция хранятся внутри одноэлементного класса.

Нам интересно, почему происходят случайные сбои. мы попробовали контрольно-измерительные приборы, зомби были включены, но мы не смогли воспроизвести аварию.

Выводы:

 1. All Crashes pointing the same address (0x8000000000000000)
 2. iPhone XS Max Crashing a-lot. 
 3. Since this function inside a singleton, there is no way for deallocation. 
 4. Sometime dictionary can be accessed from background thread as well. 
 5. will this crash happens bcoz of Race Conditions.

Помощь оценена. Благодарю.

Crashlytics Screenshot

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...