| Previous | Next |
| CO_E_INIT_SCM_EXEC_FAILURE | CO_E_CANT_REMOTE |
CO_E_INIT_ONLY_SINGLE_THREADED
COM initialization conflicts with single-threaded setup
CO_E_INIT_ONLY_SINGLE_THREADED is HRESULT 2147500050 (0x80004012) from winerror.h. The documented description is “There was an attempt to call CoInitialize a second time while single threaded.” The value must be interpreted at legacy single-threaded COM initialization and repeated initialization on the same thread.
The thread attempted an initialization sequence incompatible with its existing single-threaded COM state.
Where the result appears
- This result may surface in legacy single-threaded COM initialization and repeated initialization on the same thread.
Typical causes and interpretation
Common cause categories are: a library reinitializes the thread with incompatible assumptions; COM is initialized from nested startup code; apartment ownership is unclear. The evidence should distinguish configuration, lifetime, input, identity, resource, and version failures rather than grouping them.
Key distinction: the thread attempted an initialization sequence incompatible with its existing single-threaded COM state.
Correct handling and recovery
The appropriate recovery is to choose the apartment model once at thread entry, treat S_FALSE as successful initialization, balance each successful call, and remove hidden reinitialization.
Practical scenario
A UI thread is initialized by the host and a plug-in repeats a legacy initialization path that assumes it owns the apartment.
Difference from related HRESULTs
RPC_E_CHANGED_MODE is the modern explicit apartment-model conflict; this code belongs to an older COM initialization path.
References
Looking for a different code? Search another status or error code.