| Previous | Next |
| MACH_SEND_NO_GRANT_DEST | MACH_RCV_IN_PROGRESS |
MACH_SEND_MSG_FILTERED
A kernel-side message filter rejected an otherwise addressed send
MACH_SEND_MSG_FILTERED means a message filter rejected the send. The status is useful precisely because it separates policy enforcement from address resolution: the caller may hold a destination right, yet the message still is not delivered. It should not be diagnosed as a normal timeout or as evidence that the destination process has already read the request.
The result alone does not reveal the filter rule. A filter can evaluate message properties, destination policy, or context that is outside the application payload. That is why blind retries and random changes to the message identifier are poor responses: they can generate repeated denied traffic without discovering the policy boundary.
What to preserve for diagnosis
- Log the message identifier, options, destination owner or service, and whether the body contains descriptors or transferred rights.
- Keep the relevant kernel, sandbox, entitlement, or service policy logs from the same time window.
- Compare a rejected call with a known accepted call made through the same public API, including its execution context.
- Do not mark an operation complete until the caller has a successful send result or a documented application-level acknowledgement.
References
- Apple XNU source: mach/message.h
- Mach Kernel Interface Reference: mach_msg
- GNU Mach Reference Manual: interprocess communication
Looking for a different code? Search another status or error code.
