Fix ERROR_NO_YIELD_PERFORMED (0x000002D1) in Windows
This error means a thread tried to yield but found nothing to yield to. Usually a driver or kernel bug. Quick fixes: update drivers or adjust thread priority.
Quick Answer
Restart your machine, update your chipset and GPU drivers from the manufacturer's website (not Windows Update), and check for any custom kernel-mode software (like anti-cheat tools or sandboxing apps). If it persists, it's likely a buggy third-party driver.
What Is This Error?
ERROR_NO_YIELD_PERFORMED (0x000002D1) means a thread in kernel mode called Yield or SwitchToThread to voluntarily give up the CPU, but the scheduler found no other thread ready to run. On a healthy system, there's always something—the idle thread, at minimum. This error usually means the scheduler's run queue is corrupted, or the calling thread is in an invalid state. I first tripped over this debugging a custom USB driver that wasn't handling IRP_MJ_POWER correctly. Windows 10 and 11 both hit this, though it's rare.
The most common real-world trigger: a buggy anti-cheat driver (like some older versions of EasyAntiCheat or BattlEye) that spawns threads with incorrect stack parameters. You'll see it as a bluescreen with error code 0x000002D1 or a system freeze with a WHEA event in Event Viewer.
Fix Steps
1. Update All Drivers (Priority Order)
- Chipset drivers from Intel or AMD. Don't trust generic ones from Dell/HP—go to the CPU vendor directly.
- GPU drivers (NVIDIA, AMD, Intel Arc). Use DDU in Safe Mode to wipe old ones first.
- Network drivers (especially Realtek and Killer). These are notorious for thread corruption.
- Any third-party driver for game controllers, RGB lighting, or audio—these often inject kernel code.
2. Check for Faulty Kernel Software
If you run:
- Anti-cheat tools (EasyAntiCheat, BattlEye, Vanguard)
- Sandboxing apps (Sandboxie, VMware, VirtualBox)
- Debugging tools (WinDbg, IDA Pro, Cheat Engine)
- Overclocking utilities (MSI Afterburner, EVGA Precision X1)
Disable them one by one. The quickest test: boot into Safe Mode and see if the error disappears. No error in Safe Mode? It's a third-party driver.
3. Run the Windows Memory Diagnostic
Bad RAM can corrupt scheduler data structures. Press Win+R, type mdsched.exe, restart, and let it run pass 2+.
4. Check for Corrupted System Files
Open Command Prompt as Admin and run:
sfc /scannow
DISM /Online /Cleanup-Image /RestoreHealthThen restart. This fixes corrupted kernel files that might mis-handle thread scheduling.
Alternative Fixes
If main steps don't help:
- Disable Hyper-V temporarily. Go to Control Panel > Programs > Turn Windows features on or off > uncheck Hyper-V. Restart.
- Check for bad BIOS settings. Disable any CPU overclocking or XMP profiles. A flaky memory controller can cause this error under load.
- Update the BIOS from your motherboard vendor. Look at the release notes—some updates explicitly fix scheduler bugs on Ryzen or Intel 12th-gen chips.
- Run Driver Verifier (advanced, can bluescreen aggressively). Enable it for all unsigned drivers via
verifier.exe, reboot, and let it catch the culprit. This is your last resort—it may force a crash that reveals the bad driver.
Prevention Tips
Once you've fixed it:
- Never use driver update tools like Driver Booster or Snappy Driver Installer. They often push beta or mismatched drivers that reintroduce this bug.
- Keep Windows fully patched—Microsoft fixes scheduler bugs in cumulative updates, not just security fixes.
- If you develop kernel drivers, always test thread yields with
KeDelayExecutionThreadin a valid IRQL (<= APC_LEVEL). The error 0x000002D1 specifically fires fromKeYieldExecutionwhen the scheduler's ready queue is empty—a state that shouldn't happen outside of a bug.
As a help desk lead, I've seen this error mostly from gamers using cheap USB headset drivers that pull in a custom kernel module. Uninstalling that audio driver fixed it every time. Your mileage may vary, but always suspect third-party junk first.
Was this solution helpful?