| Предыдущий | Следующий |
| MACH_MSG_VM_SPACE | MACH_MSG_MASK |
MACH_MSG_IPC_SPACE
Исчерпание пространства имён Mach внутри задачи
MACH_MSG_IPC_SPACE дополняет ошибку отправки или приёма, когда задача не может выделить ещё одно имя в своём пространстве IPC для переданного права порта. Имена портов Mach являются локальными дескрипторами задачи: получение права обычно создаёт или обновляет запись в её пространстве имён. Поэтому этот бит указывает на ёмкость пространства имён или давление жизненного цикла на стороне получателя, а не на повреждённое DNS-подобное «имя» и не обязательно на общее исчерпание ядра.
Если ошибка возникает после извлечения сообщения из очереди, интерфейс может уничтожить непередаваемое право и поместить вместо него MACH_PORT_NULL. Ошибка тела может быть частичной, поэтому другие дескрипторы того же сообщения уже могут быть действительными и принадлежать получателю.
Что проверить
- Расшифруйте связанный
MACH_RCV_HEADER_ERROR,MACH_RCV_BODY_ERRORили результат отправки до выбора очистки. - Проверьте долгоживущие права отправки, мёртвые имена, права уведомлений и несбалансированное освобождение портов Mach в принимающем процессе.
- Проверяйте каждый возвращённый дескриптор, а не считайте сложное сообщение полностью успешным или полностью неудачным.
- Отличайте этот бит от
MACH_MSG_IPC_KERNEL, обозначающего нехватку IPC-ресурсов ядра.
Ссылки
Нужно найти другой код? Найти другой код состояния или ошибки.