When you see this error
You'll hit ERROR_MUTANT_LIMIT_EXCEEDED (0x0000024B) when a thread tries to acquire a mutex (aka a mutant in NT kernel terms) more than 127 times in a row without releasing it. This happens most often in custom drivers or buggy third-party software like antivirus hooking drivers, GPU tweaking tools (EVGA Precision, MSI Afterburner), or old printer drivers. The trigger is usually a specific action — connecting a USB device while a game is running, or opening a file dialog in an app that uses a kernel-mode driver. On Windows 10 2004 and later, this is rare but nasty.
What's actually going on
The NT kernel has a hard limit on recursive mutex acquisitions — 127 counts per mutant object. When a thread calls KeWaitForSingleObject on a mutant it already owns, the kernel increments an internal counter. If that counter hits 128, you get 0x0000024B. The culprit here is almost always a driver with a buggy recursion path — maybe a callback that triggers the same mutex again before releasing it. Or an app that uses a mutant as a semaphore (wrong tool for the job). The error isn't about system resources — it's about a single thread going too deep.
Fix it in 4 steps
- Identify the offender — Open Event Viewer, go to Windows Logs > System. Look for a bugcheck or WER error near the time you saw the error code. If you see a driver name (like
dxgkrnl.sysornvlddmkm.sys), that's your suspect. If not, use Driver Verifier (but be careful — it can blue screen you). - Run Driver Verifier with limited scope — Open an admin command prompt, type
verifier. Select "Create custom settings", then "Next". Check "Special pool", "Force IRQL checking", and "Deadlock detection". On the next screen, choose "Select driver names from a list". Don't check everything — just add drivers from step 1, or check all unsigned drivers. Reboot. If the system crashes, the crash dump will name the bad driver. Don't run Verifier on Microsoft's drivers unless you're desperate — it'll flood you with false positives. - Update or roll back the driver — If you found a specific driver in step 1 or 2, go to Device Manager, find the device, right-click > Properties > Driver > Update Driver. Or roll back if a recent update caused it. For graphics drivers, use DDU in Safe Mode, then install the latest stable driver.
- Check for rogue software — Disable startup programs one by one. For antivirus, temporarily uninstall (not just disable). For GPU tools, uninstall MSI Afterburner or similar. Reboot after each change. The goal is to see if the error stops. If it does, keep that software off.
When the fix doesn't stick
If you still see 0x0000024B after all that, check two things. First, run sfc /scannow in an admin command prompt — corrupted system files can cause weird kernel behavior. Second, check if you have any old Windows 7 era drivers. Use driverquery /v from an admin prompt, look for anything dated before 2015. Those almost always break on Windows 10 21H2 and later. If it's still happening, you're looking at a hardware or firmware issue — try updating your BIOS/UEFI or swapping out the device that triggers the error.
One more thing: if you're running a custom kernel driver you wrote, check your mutex acquisition pattern. You can't nest KeWaitForSingleObject more than 127 times on the same mutant. Use KeQueryMutantOwnerThread to verify you haven't already acquired it. That's the real fix for developers.