| Предыдущий | Следующий |
| KERN_INVALID_ADDRESS | KERN_NO_SPACE |
KERN_PROTECTION_FAILURE
KERN_PROTECTION_FAILURE означает, что адрес допустим в целевой задаче, но запрошенная операция противоречит правам доступа отображения. Иными словами, это проблема защиты, а не признак отсутствия диапазона адресов.
Этот результат часто важен при чтении, записи, копировании или повторном отображении виртуальной памяти Mach. Процесс может совместно использовать диапазон, оставляя его только для чтения, а Mach применяет защищённое совместное использование как часть механизма копирования при записи. Поэтому запись в такой диапазон может завершиться ошибкой, даже если чтение или запрос сведений об области успешны.
Как диагностировать
- Определите точную операцию: чтение, запись, выполнение, копирование или изменение отображения.
- Проверьте текущую защиту целевого диапазона и не охватывает ли операция несколько областей.
- Не воспринимайте результат как предложение обойти защиту macOS. Правильное исправление обычно состоит в использовании разрешённой операции или создании отображения с необходимыми правами.
- При работе с другой задачей отличайте проблему полномочий или разрешений для порта задачи от защиты конкретной области VM.
Документация Apple по Mach описывает диапазоны виртуальной памяти как отображения, поддерживаемые объектами памяти. Права являются частью состояния отображения, поэтому одного допустимого адреса недостаточно для любого вида доступа.
Ссылки
- XNU: kern_return.h
- Руководство Apple по программированию ядра: обзор Mach
- Справочное руководство GNU Mach: интерфейс виртуальной памяти
Нужно найти другой код? Найти другой код состояния или ошибки.