STATUS_THREADPOOL_SET_EVENT_ON_COMPLETION_FAILED (0xC000070B) Fix
This error hits when a threadpool callback can't signal a completion event. It's a system resource issue, not a user fault. We'll fix it with registry tweaks and driver updates.
When This Error Shows Up
You'll see this error in the System Event Log (Event ID 0 with source Kernel-General or WER) right after a program crashes—or worse, the whole machine blue-screens with a bug check. The message looks like: STATUS_THREADPOOL_SET_EVENT_ON_COMPLETION_FAILED (0xC000070B) - After a callback to 0x%p(0x%p), a completion call to Set event(0x%p) failed with status 0x%08x. Real-world trigger: I've seen this most on Windows Server 2019 boxes running heavy SQL Server loads, also on Windows 10 22H2 machines with third-party antivirus (especially Webroot or older McAfee). It happens when a threadpool worker thread finishes its job but the kernel can't signal the completion event—something in the chain is blocked or exhausted.
Root Cause in Plain English
The Windows threadpool is a system that reuses worker threads to handle tasks efficiently. Each task gets a callback, and when the callback finishes, the threadpool must signal a "SetEvent" to mark completion. If that signal fails, you get 0xC000070B. This isn't a user application bug—it's a kernel resource starvation problem. The three main culprits: a buggy device driver that's hogging threadpool entries, a system-wide handle table that's full (too many open handles by a leaky app), or a corrupted threadpool data structure from a previous crash. The worst part: once it happens, it tends to keep happening until you clear the underlying resource drain.
The Fix – Step by Step
-
Check Event Log for the exact source. Open Event Viewer (
eventvwr.msc), go to Windows Logs > System. Filter by Event ID 0 or 1001. Look for source "Kernel-General" or "WER". The error message will mention the failing driver module—jot down that name (e.g.,dxgkrnl.sys,ntoskrnl.exe, a third-party driver). That's your target. -
Update or roll back the suspected driver. If the error points to a non-Microsoft driver, update it from the manufacturer's site—not Windows Update. For example, if it's a storage driver like
storport.sysfrom your RAID controller, get the latest from the vendor. If the error started right after a driver update, roll it back: Device Manager, right-click the device, Properties > Driver > Roll Back Driver. Reboot after the change. You should see the error stop within 24 hours of system activity. -
Increase threadpool limits via registry. This gives the system headroom if the default pool is too small for your workload. Open Registry Editor (
regedit). Go toHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Executive. Create a new DWORD (32-bit) calledAdditionalThreadpoolSize. Set it to decimal16(this adds 16 worker threads to the default pool). Reboot. If the error persists, you can bump it to 32, but don't go higher—it'll waste memory. -
Free up handle table space. Open Task Manager, go to Details tab. Add the "Handles" column (right-click column headers > Select Columns). Sort by handles descending. Look for any process with over 50,000 handles—that's a leak. Common culprits:
svchost.exehosting a leaky service,lsass.exewith too many open sessions, orexplorer.exewith a shell extension gone wild. Kill or restart that process (forsvchost.exe, usetaskkill /f /pid [PID]then restart the service). After clearing the leak, reboot and check if the error returns. -
Run System File Checker and DISM. Corrupted system files can corrupt threadpool structures. Open Command Prompt as Administrator. Run
sfc /scannow. When it finishes (expect 15-20 minutes), runDISM /Online /Cleanup-Image /RestoreHealth. Reboot after both complete. This has fixed the error on several Server 2019 machines I've worked on where the cause was a bad Windows update. - Disable third-party antivirus temporarily. Some antivirus filters into the threadpool to monitor callbacks. If you're using Webroot, Bitdefender, or McAfee, disable real-time protection for 30 minutes and reproduce the workload that triggered the error. If the error disappears, uninstall the antivirus entirely and switch to Windows Defender. I've seen this pattern at least a dozen times—antivirus hooks are the worst.
If It Still Fails
Run a kernel memory dump analysis. The full memory dump will show the exact threadpool thread that failed. Download WinDbg from the Windows SDK. Open the .dmp file (usually at %SystemRoot%\MEMORY.DMP). Run !analyze -v and look for the FAILURE_BUCKET_ID. That bucket often names the driver or system call that exhausted the threadpool. If it points to ntoskrnl.exe with no other driver, the issue is a hardware problem—bad RAM or a failing CPU. Run a memory test (mdsched.exe) and check event logs for WHEA errors. If you're on a VM, contact your hypervisor admin to check for host-level resource pressure.
Was this solution helpful?