Сбой процесса XPC в старых macOS из-за отсутствия дезинфицирующих средств
Когда я беру Debug Build своего приложения MacOS, встроенного в Xcode 9.1, и перемещаю его на Mac с MacOS 10.11 или 10.12 для тестирования, я обнаруживаю, что процесс XPC моего приложения аварийно завершает работу при загрузке, и в отчете о сбое указывается, что причина в том, что система не может найти новые структуры sanitizer в старой системе. Хорошо, я понимаю, что эти платформы не существуют в старых версиях MacOS. И, если я отключу Обеззараживатель адресов, Обеззараживатель потоков и Неопределенное обезвреживающее поведение в разделе Выполнить > Диагностика Схемы в XCode и перестрою, проблема будет решена.
Есть некоторые вещи, которые здесь не имеют смысла. Почему секция Run Схемы XCode очевидно влияет на Построение? Почему происходит сбой только процесса XPC?
1 ответ
Почему секция Run Схемы XCode очевидно влияет на Построение?
Это действительно не имеет смысла, но, вероятно, имеет простое объяснение. Устаревшие инструменты диагностики кода (проверка API, проверка malloc и т. Д.) Не требовали перекомпиляции, поэтому имело смысл поместить их в Run. Дезинфицирующие средства также являются диагностическими инструментами, поэтому разработчики решили, что лучше поместить их в одно и то же меню и заставить людей перестраивать приложение.
Почему происходит сбой только процесса XPC?
Я предполагаю здесь, но инициализация Asan обычно довольно сложна и, в частности, может произойти после инициализации других библиотек. Возможно, основной процесс запустил дочерний XPC перед инициализацией Asan.