What does HRESULT 0x80080006 (CO_E_OBJSRV_RPC_FAILURE) mean?

 
Previous Next
CO_E_SERVER_EXEC_FAILURE MK_E_NO_NORMALIZED

CO_E_OBJSRV_RPC_FAILURE

Treat this HRESULT as a marker, not as a request for a generic restart or reinstall. It is returned when the object server was selected, but RPC communication with that server failed during activation or object exchange.

Start with the failing layer

COM activation is a sequence rather than a single operation: registration lookup, SCM or surrogate selection, process startup, class-factory publication, marshaling, and finally the requested interface call. The useful evidence is the evidence from the first stage that fails; a later RPC or cleanup message can otherwise hide the original activation problem.

Do not collapse this result into a nearby status. CO_E_SCM_RPC_FAILURE concerns the activation controller; CO_E_OBJSRV_RPC_FAILURE points to communication with the object server itself. Compare lifecycle, identity, caller, and first API.

Preserve before retrying

RecordHow it narrows the cause
Server PID and lifetime, RPC exception/status, interface IID, and method/activation phasePins evidence to one attempt.
Server crash/hang dump and event logs immediately before disconnectSeparates contract failure from environment.
Proxy/stub or type-library version, apartment model, and marshaling pathCreates a stable before/after control.
Local versus remote behavior with the same interface payloadTests whether the first boundary moves.

Identifiers, timestamps, versions, counts, state flags, hashes, and redacted paths normally provide enough correlation. Keep credentials, private keys, message bodies, recovery material, and personal data out of routine incident logs.

Three useful comparisons

  • Call a trivial method on the same server to distinguish server availability from payload-specific marshaling; use a disposable or backed-up environment when the comparison changes boot, security, device, queue, or encryption state.
  • Run client and server on one machine to remove the network while preserving RPC marshaling; retain one negative control so that a broad workaround is not mistaken for a root-cause correction.
  • Enable server-side first-chance exception and RPC ETW tracing for one reproduction; keep every other input fixed and record the first event that differs from the failing run.

Do not use repeated retries as the primary test. In this case, a successful later attempt may reflect a new object, refreshed policy, restarted service, different token, or completed background transition, so record exactly what changed between attempts.

Decision points

Read the comparison results in this order for RPC communication with an activated COM object server:

Observed resultInterpretation
The minimal or known-good comparison succeeds The control works; inspect production-specific state.
The control fails at the same first operation The control also fails; inspect host/provider evidence.
A new HRESULT marks another boundaryThe failure moved to another boundary; diagnose the new status separately rather than treating it as confirmation that the entire operation is fixed.

A defensible fix

Repair the failed contract rather than the surrounding system: Repair the server crash, marshaling mismatch, RPC transport, or lifetime race that terminates the object channel. Preserve the pre-change configuration or trace.

Close the incident only when the same interface call succeeds across process and machine boundaries, including server restart and client reconnect scenarios. Repeat under the original identity and state. A different environment is comparison, not proof.

Technical references

These references define the HRESULT family and subsystem contract used above:


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