| Previous | Next |
| MACH_SEND_NO_BUFFER | MACH_SEND_INVALID_TYPE |
MACH_SEND_TOO_LARGE
More than a local buffer error
MACH_SEND_TOO_LARGE means the assembled Mach message is beyond what the receiving port or the current IPC implementation will accept. It is distinct from MACH_SEND_MSG_TOO_SMALL: here the caller has a message, but it is too large to send as one unit. XNU exposes no fixed universal message-size maximum; architectural limits and temporary conditions can affect large sends, and the source defines a reliability threshold for application-private use rather than a portable public quota.
Moving bulk data out of the inline payload is usually more robust than merely enlarging a message struct. A protocol can pass a port, shared-memory handle, file descriptor through a higher-level bridge, or an out-of-line memory descriptor when that ownership model is appropriate. The receiver must still validate size and resource use.
Design checks
- Log total
msgh_size, inline payload size, descriptor count, and destination service. - Define an explicit protocol maximum instead of relying on an implicit kernel limit.
- Chunk large work with sequence numbers and acknowledgements when a single request is not required to be atomic.
- Verify the receiving service has a matching policy for out-of-line data and does not allocate unbounded buffers from untrusted input.
References
- Apple XNU source: mach/message.h
- Mach Kernel Interface Reference: mach_msg
- Apple Kernel Programming Guide: Mach overview
Looking for a different code? Search another status or error code.
