| Previous | Next |
| MACH_SEND_INVALID_TYPE | MACH_SEND_INVALID_TRAILER |
MACH_SEND_INVALID_HEADER
The header did not describe a valid send
MACH_SEND_INVALID_HEADER means the mach_msg_header_t fields are not a valid combination for a user-to-kernel send. The most important field is msgh_bits: it encodes the dispositions for the destination, reply, and voucher ports and identifies complex messages. Reserved or incompatible bits, a disposition not allowed for the supplied port field, or an inconsistent header can make the entire message invalid.
This condition is useful because it occurs before the message is delivered. It points to serialization or interface-construction logic, not to server availability. A patch that changes only the constant returned by a wrapper is not a fix; inspect the complete header and the code that populated it.
What to verify
- Set port dispositions with the documented
MACH_MSGH_BITSmacros rather than numeric literals. - Clear reserved bits and initialize all header fields before assigning ports.
- Confirm that the remote field carries a valid send or send-once right and that the local/reply field is compatible with the protocol.
- Check structure packing and generated bindings when a message crosses language or ABI boundaries.
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.
