| Previous | Next |
| KERN_ALREADY_IN_SET | KERN_NAME_EXISTS |
KERN_NOT_IN_SET
KERN_NOT_IN_SET means an operation expected a receive right to belong to a particular Mach port set, but that membership is absent. It is the counterpart to KERN_ALREADY_IN_SET and normally appears during removal, state transition, or dispatch reconfiguration.
A port set is used to receive from several event or message sources through one wait point. Membership is attached to a receive right, not to a generic globally shared port identity. A port name that is valid in one task, or a send right used elsewhere, does not prove the expected receive-side membership exists here.
What to check
- Whether the port was added to a different port set or removed earlier by another path.
- Whether cleanup is running twice or after a failed partial setup.
- Whether the application is mixing port names from different task namespaces.
- Whether concurrent code can destroy or reconfigure the receive right before the membership operation finishes.
The useful fix is to reconcile the application's recorded port-set state with the actual lifecycle of the receive right. Retrying blindly can hide a race while leaving the event-dispatch topology wrong.
References
- XNU: kern_return.h
- Apple Kernel Programming Guide: Mach ports and rights
- GNU Mach Reference Manual: Port Manipulation Interface
Looking for a different code? Search another status or error code.