| Previous | Next |
| EOVERFLOW | ENOTUNIQ |
EPROGMISMATCH
EPROGMISMATCH is Darwin’s error for a remote program-version mismatch in ONC RPC. The server has accepted the RPC call and recognizes the program, but it cannot serve the requested version of that program. This is deliberately narrower than an RPC protocol-version failure: the outer RPC protocol can be valid while the application-level service version is incompatible.
RFC 5531 defines PROG_MISMATCH for this accepted-call case. The response includes the lowest and highest program versions supported by the remote server. Those bounds are the key evidence; they show whether the client chose an obsolete version, a version that is too new, or simply contacted a service deployment with a different compatibility range.
Use the version range, not guesses
- Capture the requested program number and version together with the server-provided low and high supported versions.
- Compare the client’s RPC interface definition and generated stubs with the deployed server, not merely with source code from another branch or environment.
- For a service such as NFS, identify the protocol version configured on both client and server. A server can be reachable and export the program while still declining the particular version requested.
- Keep rollout state in view: mixed server versions behind one endpoint can make the same request succeed against one node and fail against another.
What this code does not mean
- It is not
ERPCMISMATCH; that code concerns the RPC wire-protocol version itself. - It is not
EPROGUNAVAIL; here the program exists, but the requested version is outside its supported range. - It is not
EPROCUNAVAIL; that code concerns a procedure absent from an otherwise selected program/version.
References
- Apple XNU: errno.h
- RFC 5531: PROG_MISMATCH and its supported-version range
- RFC 1833: ONC RPC binding context
Looking for a different code? Search another status or error code.
