Cause 1: A stuck RPC or COM+ process is holding the mutex
Most of the time, this error appears after a program crashes or a service stops unexpectedly. The mutex—a lock the OLE system uses to prevent two copies of itself from running—gets orphaned. You'll see this happen on Windows Server 2016 or 2019 when an application tries to start COM components, often after a reboot or a failed update.
The quickest fix is to kill the process that owns the mutex. That's usually svchost.exe running the RPC service, or dllhost.exe for COM+.
Step-by-step:
- Open Task Manager (Ctrl+Shift+Esc). go to the Details tab.
- Look for
dllhost.exe. If there are multiple, note the PID of the one using CPU or memory. - Before killing, open an elevated Command Prompt (Run as administrator).
- Run this to see which process owns the mutex:
handle.exe -a 0x8000400E 2>nul || tasklist /fi "imagename eq dllhost.exe"
(You'll need Sysinternals handle.exe if you want the exact owner, but often just killing dllhost.exe works.)
- Kill the process:
taskkill /PID <PID> /F - Restart the RPC service:
net stop rpcss && net start rpcss
After that, try your application again. You should see it start without the error. If the mutex is still held, reboot the machine. A reboot clears all orphaned mutexes.
Cause 2: The RPC service is disabled or set to manual incorrectly
Another common trigger: during a security hardening script or a group policy change, someone set the Remote Procedure Call (RPC) service to Manual or even disabled it. That breaks COM's ability to initialize. The error code exactly matches when the service can't create the mutex because the underlying service isn't running.
Check and fix the service state:
- Press Win+R, type
services.msc, hit Enter. - Scroll to Remote Procedure Call (RPC). Double-click it.
- Set Startup type to Automatic.
- If the service is stopped, click Start. After starting, you should see the status change to "Running".
- Also check Remote Procedure Call (RPC) Locator—set it to Manual (that's the default, it's fine).
Then restart the application that gave the error. If it still fails, run sfc /scannow from an elevated Command Prompt. That checks system files that might have been corrupted. After sfc, reboot and test.
Cause 3: Registry entries for the OLE mutex are stale or corrupted
Less common, but I've seen it after improper uninstalls of COM+ components or a registry cleaner gone wrong. The mutex object is persisted in the registry under the COM key. If it references a non-existent process, the system thinks the mutex exists but can't find the owner.
Warning: editing the registry can break things. Back up first.
Clean the registry:
- Open
regedit.exeas administrator. - Go to:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\OLE
- Look for a value named
EnableDCOMorDefaultLaunchPermission. Don't delete those. Instead, look for a subkey or value that contains "Mutex"—sometimes it's underHKEY_LOCAL_MACHINE\SOFTWARE\Classes\AppID. - If you see a value named
MutexNameor similar, right-click and delete it. This forces the system to recreate it fresh. - Close regedit and reboot.
After reboot, the error should be gone. If it's not, you might need to re-register COM components: regsvr32 ole32.dll and regsvr32 rpcrt4.dll from an elevated prompt. That re-adds all default COM registrations.
Quick-reference summary
| Cause | Symptom | Fix |
|---|---|---|
| Stuck process | Error after crash or reboot | Kill dllhost.exe, restart RPC service |
| RPC service disabled | Error always, even after fresh login | Set rpcss to Automatic, start it |
| Registry corruption | Error persists after service fix | Delete mutex value, re-register DLLs |
That's the order I'd try. Nine times out of ten, the process kill solves it. If you're in a hurry, just reboot the server—that clears everything and gets you back up. But if it happens repeatedly, check for a broken application that leaks mutexes. You might need to update the app or set a scheduled task to clear the mutex after each crash.