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

 
Предыдущий Следующий
MACH_MSG_VM_KERNEL MACH_MSG_VM_SPACE

MACH_MSG_IPC_KERNEL

Дефицит ресурсов IPC ядра, а не неверное имя порта

MACH_MSG_IPC_KERNEL дополняет другой результат отправки или получения Mach, когда ядру не хватает ресурсов для передачи возможности IPC. Здесь «возможность» означает право порта Mach, переносимое в заголовке или теле сообщения. Этот бит не означает, что отправитель указал недопустимое право: неверные имена, диспозиции и владение имеют отдельные базовые коды ошибок.

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

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

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

Ссылки


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