| Previous | Next |
| MACH_SEND_INVALID_VOUCHER | MACH_SEND_MSG_TOO_SMALL |
MACH_SEND_INTERRUPTED
Interruptible send semantics
MACH_SEND_INTERRUPTED means a software interrupt aborted a send that was waiting in the kernel. It is most relevant when the call used MACH_SEND_INTERRUPT; otherwise the user-space mach_msg wrapper normally retries an interrupted send. The result is therefore an explicit control-flow outcome chosen by the caller, not evidence that the destination rejected the request.
For this result, Mach uses the pseudo-receive recovery path to return the message as far as possible. That matters for complex messages containing moved rights or out-of-line memory. Do not assume the request was queued and do not free or duplicate transferred resources until their post-return state has been examined.
How to handle it
- Decide whether cancellation is semantically valid for this specific RPC; an interrupted retry can otherwise duplicate work.
- Preserve a request identifier and an acknowledgement path for operations with side effects.
- Check the returned message buffer before retrying when descriptors transfer rights or memory.
- Log the active Mach options and the cancellation or signal path that interrupted the thread.
References
- Mach Kernel Interface Reference: mach_msg
- Apple XNU source: mach_msg implementation
- Apple Kernel Programming Guide: Mach overview
Looking for a different code? Search another status or error code.
