Я пытался понять, что случилось. У меня нет решения, но есть несколько идей:
Трассировка стека (строка 0) говорит о сбое в CocoaLumberjack
быстром коде в строке 73, где к Bool
var
asyncLoggingEnabled
необходимо получить доступ с помощью unsafeMutableAddressor
.
Видимо, это инструкция
public var asyncLoggingEnabled = true
в этом коде в строке 73.
Я полагаю, что к этому var
можно получить доступ с помощью UnsafeMutablePointer
( docs ). Здесь приложение
... отвечает за управление жизненным циклом любой памяти, с которой вы работаете
через небезопасные указатели, чтобы избежать утечек или неопределенного поведения.
В частности,
Многие операции с указателями должны применяться только к указателям с памятью
в определенном состоянии - вы должны отслеживать состояние памяти, которую вы
работаем и понимаем изменения в этом состоянии,
различные операции выполняют. Память может быть нетипизированной и неинициализированной,
привязанный к типу и неинициализированный, или связанный с типом и инициализированный
к значению. Наконец, память, которая была выделена ранее, может иметь
были освобождены, оставив существующие указатели, ссылающиеся на нераспределенные
память.
Я полагаю, что ваше приложение упало, потому что указатель, используемый для доступа к asyncLoggingEnabled
, указывает на память в недопустимом состоянии.
Если это происходит, системная ловушка должна быть выполнена для обработки ситуации, но она может быть выполнена, только если был установлен обработчик ловушки для этого типа исключения. Если это не так, выполняется незаконная ловушка (код исключения: ILL_ILLTRP), которая обрабатывает все не обработанные ловушки.
Вероятно, память может случайно оказаться в легальном состоянии, в зависимости от истории выполнения. Таким образом, сбой может произойти или нет.
Короче говоря, я думаю, что это ошибка в CocoaLumberjack
.