| Previous | Next |
| MACH_SEND_INVALID_REPLY | MACH_SEND_INVALID_NOTIFY |
MACH_SEND_INVALID_RIGHT
A capability ownership error
MACH_SEND_INVALID_RIGHT means that a port-right descriptor in the message body requested a move, copy, or make operation that the calling task cannot perform. For example, moving a receive right requires owning that receive right; copying or moving a send right requires owning a send right; and making a send right requires access to a receive right. A port name alone is not permission.
Unlike the header, body descriptors do not have the same all-or-nothing atomicity guarantee. The documentation warns that body elements may be processed in different orders, and the kernel can destroy some or all of a malformed message. A recovery path must treat the message object as consumed or altered until it has been rebuilt from authoritative application state.
What to check
- Inspect every descriptor’s port name, descriptor type, disposition, and intended transfer ownership.
- Track who deallocates or moves each right; a successful earlier send can legitimately remove a right from the sender.
- Avoid caching raw names as substitutes for explicit ownership tracking.
- For complex RPCs, recreate descriptors from durable references before retrying.
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.