| Previous | Next |
| MACH_RCV_HEADER_ERROR | MACH_RCV_INVALID_TYPE |
MACH_RCV_BODY_ERROR
Partial receipt of a complex message
MACH_RCV_BODY_ERROR means the header was received, but one or more body elements could not be delivered because the receiver or kernel lacked a required IPC or virtual-memory resource. This applies to port-right descriptors and out-of-line memory. Mach attempts to process the body and identifies the resource class with additional status bits, but the receiver must not assume every descriptor survived intact.
For a complex request, this is a protocol-integrity issue as well as a pressure signal. A server that proceeds with missing transferred rights or a zeroed out-of-line region may operate on incomplete authority or incomplete data. The correct policy is usually to validate all required descriptors, reject or defer incomplete work, and make the sender’s retry semantics explicit.
What to capture
- Log the base result plus all resource-shortage bits, message ID, descriptor count, and which descriptors are missing or unusable.
- Validate each received right and out-of-line region before invoking the message handler.
- Set application limits for descriptor count and out-of-line data to protect the receiver under load.
- Design reply or retry behavior so clients can distinguish an incomplete receipt from ordinary server-side validation failure.
References
- Mach Kernel Interface Reference: mach_msg
- Apple XNU source: mach/message.h
- GNU Mach Reference Manual: interprocess communication
Looking for a different code? Search another status or error code.