0XC0000194

0xC0000194 Deadlock: What It Is and How to Fix It

Programming & Dev Tools Intermediate 👁 15 views 📅 May 28, 2026

This STATUS_POSSIBLE_DEADLOCK error means two processes locked the same resource. Start with a quick reboot, then check your drivers and services, then dig into the event logs.

The Short Version (30 Seconds)

This error shows up when two threads or processes both want the same lock (mutex, critical section, handle) and neither will back down. The system detects the loop and throws 0xC0000194 to stop things from freezing completely.

If you just saw this once or after a bad app crash, reboot your machine. That clears all temporary locks held by dead processes. If the error doesn't come back, you're done. If it does, move on.

The Moderate Fix (5 Minutes) — Driver and Service Check

What's actually happening here is often a driver or system service that holds a lock while waiting on another resource that's already locked by a second service. This creates a circular wait. Common triggers I've seen:

  • Outdated or buggy graphics drivers (NVIDIA, AMD, Intel) — they create multiple threads handling rendering and share locks improperly.
  • Third-party antivirus or firewall services that hook into kernel locks.
  • Virtual machine software (VMware, VirtualBox) when hypervisor conflicts happen.

Step 1: Open Device Manager. Check for any devices with a yellow warning triangle. Update those drivers from the manufacturer's site — not Windows Update, which often pushes stale versions.

Step 2: Run sfc /scannow from an admin command prompt. This checks system files for corruption that could cause lock callbacks to fail.

Step 3: Temporarily disable non-Microsoft services. Open msconfig, go to Services tab, check "Hide all Microsoft services", then click Disable all. Reboot. If the error disappears, one of those services is the culprit. Re-enable them one by one until you find which one triggers it.

The Advanced Fix (15+ Minutes) — Event Log Deep Dive

If the moderate fixes didn't work, you need to track down the exact thread IDs and processes involved. Here's how.

Step 1: Capture the Crash Details

When the error occurs, check the System log in Event Viewer (eventvwr.msc). Look for event ID 0xC0000194 or a related bugcheck. The details will often list two thread IDs. Write them down.

Example: \Device\HarddiskVolume3\Windows\System32\ntoskrnl.exe thread 0xFFFFAABBCCDDEE11 holds lock 0xFFFFAABBCCDDEE22, waiting on thread 0xFFFFAABBCCDDEE33

Step 2: Identify the Processes

Use Process Explorer (from Sysinternals) or Task Manager to find which processes own those thread IDs. You can enable thread columns in Process Explorer (View > Select Columns > Threads). Match the thread IDs from the event log.

The reason step 3 works is that deadlocks in Windows kernel mode almost always involve a driver or a kernel call. You'll see something like afd.sys (network driver) or dxgkrnl.sys (graphics kernel) involved.

Step 3: Check for Known Bad Drivers

Visit the manufacturer's website for each identified driver. Look for known deadlock bugs — they often have a KB article or hotfix. I've seen this with:

  • Certain Realtek audio drivers (2019-era) that deadlocked with USB audio devices.
  • Older Intel network adapters with receive-side scaling enabled.
  • CrowdStrike Falcon sensor — known for causing STATUS_POSSIBLE_DEADLOCK if its service version is mismatched with the OS build.

Step 4: Force Clean Up Locked Mutexes (Registry Hack — Only as Last Resort)

If a specific driver keeps locking a mutex that's shared with another service, you can force a timeout. This is not a real fix — it hides the symptom. But if you need the machine running while you wait for a patch:

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\PendingFileRenameOperations]

That's a red herring — don't touch that. Instead, go to this key:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalSection\

Create a DWORD called CSDeadlockDetection with value 0. Reboot. This turns off deadlock detection for critical sections. Only do this if you're okay with an actual deadlock freezing the system completely — the error exists to prevent a hard hang.

When to Give Up and Reinstall

If you've done all this and the error keeps appearing, it's probably a corrupted driver store or a Windows kernel patch that's conflicting with your hardware. In that case, back up your data and do a clean install of Windows. I know that's a nuclear option, but a persistent deadlock in kernel space means something is fundamentally broken in the driver stack. You'll waste more time debugging than just starting fresh.

One last thing: if you're a developer hitting this with your own code, run !locks in WinDbg to see what each thread holds. The fix is usually to reorder lock acquisition so all threads grab locks in the same order, or to use lock-free data structures. But that's a whole other article.

Was this solution helpful?