You're running a heavy workload — maybe a video render, a database query, or a game — and suddenly your PC starts stuttering. The mouse skips, disk activity spikes, and everything takes forever. You check the Event Viewer and see 0x4000002D with the message about a driver leaking locked I/O pages. This one usually shows up after a driver update, a new peripherals install, or a Windows feature update. It's not a crash, but it's a warning that a driver is hogging physical memory that can't be paged out.
What's Actually Happening
When a driver reads or writes data directly to hardware, it locks the memory pages in RAM. That's normal — the hardware needs those pages to stay put. But a buggy driver might lock pages and never release them. Each leak eats a small chunk of your RAM. Over time, the system runs out of free memory, and Windows has to constantly trim working sets, causing the slowdown. It's like a faucet with a slow drip — eventually the sink overflows.
The real fix is to find which driver is leaking and update or replace it. Sometimes you can't update it, and then you have to disable the device or use a workaround. But first, you need to identify the culprit.
Step-by-Step Fix
Step 1: Check Which Driver Is Leaking
Windows doesn't show you the driver name directly in the event log. But you can use PoolMon (Pool Monitor) from the Windows Driver Kit. If you don't have it installed, download the Windows SDK (the version for your Windows, e.g., Windows 11 SDK) and install just the "Debugging Tools" component. PoolMon is in the Debugging Tools folder.
- Open a Command Prompt as Administrator.
- Navigate to the folder where PoolMon.exe lives (e.g.,
C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\poolmon.exe). - Run this command to capture a snapshot of the current pool allocations:
poolmon.exe /p /g - Wait 10 minutes, then press Ctrl+C to stop. You'll see a list of tags (like
Inte,NdIs,File). - Run the same command again, but this time pipe the output to a file:
poolmon.exe /p /g > pool1.txt - Wait another 10 minutes, then stop and run:
poolmon.exe /p /g > pool2.txt - Compare the two files. Look for tags whose Bytes column grew significantly. That's your leak.
To see which driver uses a specific tag, open the tag-to-driver mapping file tag.txt in the same folder. It's a plain text file that lists tags and their owning drivers. For example, File is the filesystem, Ntfs is NTFS, and Inte is often the Intel network driver.
Step 2: Use Driver Verifier to Confirm
PoolMon gives you a hint, but Driver Verifier can actually catch the exact driver. But be careful — Driver Verifier can crash your system if it finds a problem, so back up your data first.
- Type
verifierin the Start menu and open it. - Select Create custom settings, then Next.
- Check All under "Select individual settings", then Next.
- Select Select individual drivers from a list.
- Choose the drivers that match the tags you saw in PoolMon (e.g., if it's a network driver, pick the one from your NIC vendor). Don't select all drivers — that can cause a boot loop.
- Click Finish and restart your PC.
After the reboot, if the driver leaks, you'll get a blue screen with a message like DRIVER_VERIFIER_DMA_VIOLATION or DRIVER_PAGE_FAULT_IN_FREED_SPECIAL_POOL. That error will name the driver file. Note it down, then restart in Safe Mode and disable Verifier by running verifier /reset.
Step 3: Update or Replace the Culprit Driver
Once you have the driver name, go to the manufacturer's website and download the latest version. If it's a common one like a Realtek network driver or an NVIDIA GPU driver, use the official installer. Don't just rely on Windows Update — it often has older versions.
If you can't find an update, you have two options:
- Roll back the driver to a previous version via Device Manager. Right-click the device, go to Properties → Driver → Roll Back Driver.
- Disable the device if you don't absolutely need it. For example, if the leak is from a Wi-Fi adapter but you use Ethernet, disable the Wi-Fi in Device Manager.
Still Failing?
If the problem persists after updating, the driver might be locked by another driver. Check the Event Viewer for the exact time of the error and look for patterns — maybe it happens only when you plug in a specific USB device or when the screen sleeps.
Also, run sfc /scannow in an elevated command prompt. It checks for corrupted system files that could affect driver behavior. If it finds issues, let it fix them, then restart.
If you're on a laptop, check the manufacturer's support page for a BIOS update. Some firmware bugs cause drivers to leak memory — the fix isn't in the driver at all.
Finally, if nothing works, you might be looking at a hardware fault. Faulty RAM can cause drivers to behave erratically. Run a memory test — Windows has one built-in. Type Windows Memory Diagnostic in the Start menu, run it, and let it restart your PC. If it finds errors, replace the RAM sticks.
This error is frustrating because it doesn't crash your system — it just makes everything crawl. But with PoolMon and a little patience, you can track down the leak and get your speed back.