| Предыдущий | Следующий |
| MACH_MSG_SUCCESS | KERN_INVALID_ADDRESS |
kOSReturnError
Исследуйте общую ошибку операции Libkern в месте первого возврата, пока оболочка не заменила её общим сообщением. Libkern вернул общий код ошибки, потому что на этой границе не был предоставлен более конкретный OSReturn.
Читайте статус в контексте
Результаты IOKit, внутренние маркеры и сообщения служб проходят через пользовательское пространство, службы ядра и семейства оборудования. Их одинаковое целочисленное представление не делает роли взаимозаменяемыми при исследовании общей ошибки Libkern.
Возвращаемые значения IOKit, внутренние маркеры и сообщения служб имеют разный смысл для потока управления при анализе общей ошибки Libkern. Определите, возвращает ли API значение или доставляет его как сообщение, и сохраняйте число, объявленный тип и первую операцию вместе с kOSReturnError; то же целое число может принадлежать другому пространству статусов в другом API.
Диагностические факты
| Что сохранить | Диагностическая ценность |
|---|---|
| Возвращающий класс и метод, путь объекта в реестре, provider, аргументы операции и предшествующий журнал IOKit. | Определяет конкретный объект и операцию, связанные с общей ошибкой Libkern. |
| Числовое значение IOReturn или сообщения, декодированное по соответствующему заголовочному файлу SDK при анализе общей ошибки Libkern. | Отделяет состояние аргумента или жизненного цикла от нижележащего provider при анализе общей ошибки Libkern. |
| Поколение реестра и первое событие provider или клиента перед результатом. | Создаёт устойчивое сравнение состояния до и после ошибки. |
| Состояние заведомо исправного устройства или службы на той же сборке macOS и драйвера при анализе общей ошибки Libkern. | Показывает, является ли общая ошибка первичным результатом или преобразованной сводкой. |
Для общей ошибки операции Libkern сохраните состояние заведомо исправного устройства или службы на той же сборке до переустановки, перезагрузки или очистки. Успех только после такого изменения полезен как сравнительный результат для общей ошибки операции Libkern, но не устанавливает исходную причину.
Путь проверки
- Вызовите минимальный поддерживаемый метод на заведомо исправном объекте provider и повторите исходную поддерживаемую операцию.
- Измените одно условие топологии или жизненного цикла при неизменной полезной нагрузке запроса. Остальные входные данные не меняйте.
- Проверьте очистку и срок жизни объектов после контролируемой операции при анализе общей ошибки Libkern. Запишите первый статус и переход состояния.
Чего результат не доказывает
| Наблюдаемое сравнение | Следующий проверяемый вывод |
|---|---|
| Первая контрольная проверка изменила результат | Сосредоточьтесь на переменной, изолированной минимальным поддерживаемым методом на исправном provider. |
| Вторая проверка общей ошибки Libkern воспроизводит тот же первый статус | Сохраните данные нижележащего provider, драйвера, службы или среды выполнения. Вторая проверка меняла одно условие топологии или жизненного цикла. |
| После ограниченного изменения общая ошибка сменилась другим статусом | После третьей проверки операция перешла к другой границе. Проверялись очистка и срок жизни объектов. Сохраните оба результата и интерпретируйте новый статус по его контракту API при анализе общей ошибки Libkern. |
Завершение расследования
Целевое исправление. Устраните первый специфичный для provider сбой, сохранив общий код оболочки как вторичное свидетельство. Для общей ошибки операции Libkern изменяйте только объект, аргумент, политику, provider или состояние жизненного цикла, на которые указывают данные.
Критерий приёмки. Операция возвращает конкретный успех или отказ, а общий код больше не скрывает исходное событие. Повторите исходную операцию, вызвавшую общую ошибку операции Libkern с исходной идентичностью и поддерживаемой конфигурацией, затем сохраните одну отрицательную контрольную проверку.
Технические ссылки
Эти источники определяют пространство имён и контракт подсистемы, необходимые для проверки kOSReturnError в используемой версии платформы.
- Apple XNU: определения IOReturn — определяет пространство статусов общей ошибки Libkern.
- Apple: документация IOKit — описывает границу API и жизненного цикла.
- Apple OSS: исходный код XNU — предоставляет контекст ABI, реализации и протокола при анализе общей ошибки Libkern.
- Apple XNU: общие определения семейства FireWire — помогает учитывать ограничения переносимости и проверки.
Нужно найти другой код? Найти другой код состояния или ошибки.
