| Предыдущий | Следующий |
| 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, означающего отсутствие места для нового имени порта у принимающей задачи. - Очистка должна учитывать отсутствующие или переименованные права; не полагайтесь на сохранность исходных числовых имён.
Ссылки
Нужно найти другой код? Найти другой код состояния или ошибки.
