Fix RPC_S_NO_CALL_ACTIVE (0X000006BD) on Windows Server
This error means your RPC call got orphaned — no active call on that thread. Here's the real fix and why it happens.
You're staring at RPC_S_NO_CALL_ACTIVE (0X000006BD) and your app just crashed. I've been there — it's annoying because the error tells you nothing useful. Let's fix it.
The Quick Fix (What Works 90% of the Time)
This error usually means your COM or DCOM call got orphaned — the thread that initiated the RPC call is gone or stuck, and the remote procedure call has no active channel. The fastest fix is to ensure your application properly marshals COM calls across threads.
If you're writing code, wrap your RPC call in a CoInitializeEx and CoUninitialize block on the same thread. Here's the pattern in C++:
HRESULT hr = CoInitializeEx(NULL, COINIT_MULTITHREADED);
if (SUCCEEDED(hr)) {
// Your RPC call here
CoUninitialize();
} else {
// Handle error
}
For .NET apps, make sure you're not calling COM objects from a thread that hasn't been initialized for COM. Use [STAThread] on your Main method if you're in a single-threaded apartment.
If you're not a developer — this error often shows up in third-party apps like backup software, remote management tools, or even Windows Update. The quick fix is to restart the RPC service:
- Open Services.msc
- Find Remote Procedure Call (RPC) and RPC Endpoint Mapper
- Restart both (right-click → Restart)
- Reboot the server if the error persists — it clears orphaned threads
Why This Happens
RPC_S_NO_CALL_ACTIVE fires when the RPC runtime detects that a call context is active on a thread, but the actual call has completed or was cancelled. This is common in multi-threaded apps where one thread sets up the RPC call, another thread tries to use that context, but the original thread has already called RpcAsyncCompleteCall or disconnected.
Had a client last month whose print server kept throwing this error every time someone canceled a print job mid-stream. The printer driver was creating an async RPC call on a background thread, but the cancel logic killed the thread, leaving the RPC handle dangling. The fix was updating the driver to properly handle cancel operations.
Another common trigger: scheduled tasks that call WMI or PowerShell remoting. If the task runs, the RPC call starts, but then the task times out or the calling session ends, the orphaned call causes this error on the server side.
Less Common Variations (And How to Handle Them)
1. The Call Came From a Different Apartment
If your COM object is registered with a threading model (Apartment or Free), but the caller tries to use it from a thread that doesn't match, you'll get this error. The fix: register your COM object as Both threading model, or make sure callers use the correct apartment type.
2. RPC Call Was Rejected Before It Started
Sometimes the error code 0X000006BD appears linked to RPC_E_CALL_REJECTED in the event log. This happens when the RPC server is overwhelmed — too many concurrent calls. Increase the RPC thread pool size via registry:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Rpc\ServerThreadPoolSize
Value: 40 (default is 10, max 100)
3. The RPC Endpoint Was Unmapped
Some apps dynamically register endpoints. If the endpoint mapper gets flushed (e.g., after a DNS change or network adapter reset), active RPC calls fail with this error. Restarting the RPC Endpoint Mapper service usually resolves this, but you may need to restart the app too.
4. Antivirus Interfering with RPC
Had a case where Sophos was hooking RPC calls and causing them to orphan. Temporarily disabling real-time scanning (or adding an exclusion for the app's process) fixed it. If you see this error after an AV update, that's your first suspect.
Prevention (So You Don't See This Again)
Prevention is about three things:
- Threading discipline: Never pass RPC call handles across threads. If you must, use proper synchronization —
WaitForSingleObjecton the async handle before any thread exits. - Update your drivers and COM libraries: Especially printer drivers, backup agents, and remote management tools. Manufacturers often fix these orphaned call bugs in newer versions.
- Monitor RPC health: Use Performance Monitor to track counters under
RPC→Calls Outstanding. If it spikes above your baseline, investigate which app is leaking calls.
One more thing: if you're running Windows Server 2019 or later, check the Microsoft-Windows-RPC event log (under Applications and Services Logs). That log contains detailed RPC error events that can point you to the exact function and caller. It's saved my bacon more than once.
Bottom line: 0X000006BD is almost always a threading issue. Fix the thread affinity, and you'll fix the error.
Was this solution helpful?