What does macOS kernel return 0x1000000E (MACH_SEND_TOO_LARGE) mean?

 
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


Looking for a different code? Search another status or error code.