| Previous | Next |
| MACH_MSG_VM_SPACE | MACH_MSG_MASK |
MACH_MSG_IPC_SPACE
Per-task Mach name-space exhaustion
MACH_MSG_IPC_SPACE supplements a send or receive error when a task cannot allocate another name in its IPC namespace for a transferred port right. Mach port names are task-local handles: receiving a right normally creates or updates an entry in that task’s namespace. This bit therefore points to receiver-side namespace capacity or lifecycle pressure, not to a malformed DNS-like “name” and not necessarily to system-wide kernel exhaustion.
If the failure occurs after dequeue, the interface may destroy an untransferable right and expose MACH_PORT_NULL in its place. A body error can be partial, so other descriptors in the same message may already be valid and owned by the receiver.
What to inspect
- Decode the associated
MACH_RCV_HEADER_ERROR,MACH_RCV_BODY_ERROR, or send result before selecting cleanup. - Audit long-lived send rights, dead names, notification rights, and unbalanced Mach port deallocation in the receiving process.
- Validate every returned descriptor instead of treating the complex message as all-or-nothing.
- Distinguish this bit from
MACH_MSG_IPC_KERNEL, which identifies a kernel IPC resource shortage.
References
- GNU Mach: exchanging port rights
- Mach Kernel Interface Reference: mach_msg
- Apple XNU: mach/message.h
Looking for a different code? Search another status or error code.