Что означает код возврата ядра macOS 1 (KERN_INVALID_ADDRESS)?

 
Также может означать:
КонстантаТипОС
ERROR_INVALID_FUNCTIONОшибка WindowsWindows
STATUS_WAIT_1NTSTATUSWindows
kOSReturnErrorКод возврата ядра macOSmacOS
ippStsNoOperationСтатус Intel IPPЛюбая
S_FALSEHRESULTWindows
WDSCP_CATEGORYHRESULTWindows
WDSMCSERVER_CATEGORYHRESULTWindows
WDSTPTMGMT_CATEGORYHRESULTWindows
EPERMerrnoЛюбая
APC_INDEX_MISMATCHКод BSODWindows
Предыдущий Следующий
kOSReturnError KERN_PROTECTION_FAILURE

KERN_INVALID_ADDRESS

KERN_INVALID_ADDRESS — это результат подсистемы виртуальной памяти Mach. Адрес, переданный операции, недопустим в текущей карте адресов целевой задачи. Это не то же самое, что POSIX EFAULT, возвращаемый высокоуровневым API, хотя оба результата часто указывают на недопустимый диапазон памяти.

Важно различать адрес без пригодного отображения и адрес, который отображён, но имеет недостаточные права доступа. Для второго случая XNU использует KERN_PROTECTION_FAILURE. Это различие существенно при диагностике неудачной операции mach_vm_*, отладчика или кода, работающего с другим процессом: изменение защиты страниц не может устранить разрыв в карте адресов.

Что проверить

  • Убедитесь, что порт задачи относится к нужной и всё ещё активной задаче.
  • Проверяйте весь диапазон, а не только его первый байт: запрос может пересекать границу неотображённой области.
  • Повторно проверяйте адреса, полученные ранее. Область могла быть удалена из карты, заменена или стать недоступной до последующего вызова Mach.
  • При выделении памяти по фиксированному адресу убедитесь, что запрошенные адрес и длина соответствуют текущей карте целевой задачи.

В модели Mach каждая задача владеет разреженным виртуальным адресным пространством. Интерфейс VM управляет этой картой; числовой адрес имеет смысл только в соответствующей задаче и только пока его отображение существует.

Ссылки


Нужно найти другой код? Найти другой код состояния или ошибки.