What does macOS kernel return 0x10000016 (MACH_SEND_NO_GRANT_DEST) mean?

 
Previous Next
MACH_SEND_INVALID_RT_OOL_SIZE MACH_SEND_MSG_FILTERED

MACH_SEND_NO_GRANT_DEST

The message tries to transfer a port to a destination that forbids it

MACH_SEND_NO_GRANT_DEST means that the destination port does not accept ports in the message body. This matters only for a complex Mach message that contains port-related descriptors: the sender is attempting to transfer a capability, not merely to send ordinary bytes. A valid destination right can therefore still reject this particular body.

The result is not a generic access-denied status and does not prove that the remote service is down. It identifies a mismatch between the message’s descriptor set and what the destination port is permitted to receive. Retrying without understanding which descriptor carries a port right can accidentally change ownership or hide a protocol error.

What to inspect

  • Determine whether the message is complex and enumerate every body descriptor, especially port and out-of-line ports descriptors.
  • Compare the interface contract with the actual dispositions used for each transferred right.
  • Use a protocol path that sends only data when the service contract does not allow capability transfer.
  • Account for ownership effects before rebuilding the message, because move dispositions may have changed the sender’s rights during earlier work.

References


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