| Previous | Next |
| MACH_SEND_MSG_FILTERED | MACH_RCV_INVALID_NAME |
MACH_RCV_IN_PROGRESS
Waiting is not a completed receive result
MACH_RCV_IN_PROGRESS is an internal XNU state for a thread waiting in the receive path. Public callers normally observe the final outcome: a message, MACH_RCV_TIMED_OUT, MACH_RCV_INTERRUPTED, loss of the receive right, or another documented receive result. The internal marker should not be used as an application-level “try again” code.
Its presence in a trace or debugger can still be diagnostically useful. A thread can legitimately sleep because the selected port or port set has no queued message. A permanent wait instead suggests that the producer stopped, the wrong receive name was selected, queue membership changed, or shutdown failed to wake/cancel the receiving thread.
What to inspect
- Identify the receive port or port set and list the expected producers.
- Verify whether a timeout option was supplied and capture the eventual public return code.
- Check port-set membership and receive-right ownership while accounting for concurrent changes.
- For service shutdown, ensure the design has a documented wakeup, timeout, or port-destruction path rather than polling this internal value.
References
Looking for a different code? Search another status or error code.
