| Previous | Next |
| RO_E_COMMITTED | RO_E_CANNOT_ACTIVATE_FULL_TRUST_SERVER |
RO_E_BLOCKED_CROSS_ASTA_CALL
Deadlock-prone cross-ASTA call was blocked
RO_E_BLOCKED_CROSS_ASTA_CALL is HRESULT 2147483679 (0x8000001F) from winerror.h. The documented description is “A COM call to an ASTA was blocked because the call chain originated in or passed through another ASTA; This call pattern is deadlock-prone and disallowed by apartment call control.” The relevant context is the Windows Runtime metadata, object lifetime, asynchronous operation, activation, and apartment model.
Where it is encountered
- C++/WinRT, WRL, .NET projections, or native WinRT ABI calls.
- Runtime-class activation, WinMD reflection, asynchronous objects, observable state, or view lifecycle.
- Cross-thread and cross-apartment handoff between UI, ASTA, STA, MTA, broker, and background work.
The immediate focus is a synchronous COM call chain that originates in or passes through an application STA and attempts a prohibited call into another ASTA.
What to verify
Verify that the complete apartment call chain, synchronous waits, reentrancy points, and dispatcher ownership are captured. Validate this condition using the owning API state, not an inferred UI symptom.
Correct handling and recovery
Break the synchronous chain with an async boundary, marshal work to the owning dispatcher, and avoid blocking an ASTA while another apartment must call back.
Practical scenario
An ASTA handler synchronously waits on a broker that calls a second ASTA. The workflow becomes asynchronous and resumes on the original dispatcher after broker completion.
Difference from nearby HRESULTs
It is deliberate deadlock prevention; RPC_E_CANTCALLOUT_ININPUTSYNCCALL blocks a different reentrant call pattern during input-synchronous dispatch.
Developer and administrator guidance
References
Looking for a different code? Search another status or error code.
