| Previous | Next |
| MACH_MSG_VM_KERNEL | MACH_MSG_VM_SPACE |
MACH_MSG_IPC_KERNEL
Kernel IPC pressure, not a bad port name
MACH_MSG_IPC_KERNEL augments another Mach send or receive result when the kernel lacks resources needed to transfer an IPC capability. Here “capability” means a Mach port right carried in the message header or body. The bit does not mean that the sender supplied an invalid right; invalid names, dispositions, and ownership have their own base error codes.
On receive, resource failures can occur after the message has left the queue. A header failure destroys rights and memory associated with the message, while a body failure can leave some elements transferred and others replaced with null names. During a failed send, the same bit can describe an incomplete pseudo-receive that attempted to return message contents to the caller.
What to inspect
- Extract the base result and determine whether the failure occurred in a receive header, receive body, or send rollback path.
- Count port descriptors and verify their dispositions before retrying.
- Distinguish kernel IPC-resource pressure from
MACH_MSG_IPC_SPACE, which means the receiving task has no room for another port name. - Make cleanup tolerate missing or renamed rights; do not assume the original numeric names survived.
References
- Apple XNU: mach/message.h
- Mach Kernel Interface Reference: mach_msg
- GNU Mach: exchanging port rights
Looking for a different code? Search another status or error code.