BAD_POOL_CALLER, the blue screen, explained and fixed

This stop code (0x000000C2) means a driver made a bad call into the kernel’s memory pool: freeing memory it did not own, freeing the same block twice, or requesting an allocation with invalid parameters. Where BAD_POOL_HEADER is corruption found after the fact, BAD_POOL_CALLER catches the driver in the act. Either way, the shortlist is the same: a buggy driver first, faulty RAM second.

The fix, in order

  1. Identify recent driver and software changes. This crash typically begins after something installs a driver: hardware, VPNs, antivirus, backup tools, and RGB or tuning utilities all qualify. Remove or roll back the newest one first.
  2. Update drivers from the manufacturers. Network, storage, and graphics drivers in particular. A bad pool call is a programming error in the driver, and the fixed version is the real cure.
  3. Boot into Safe Mode if the PC will not stay up. Hold Shift + Restart → Troubleshoot → Advanced options → Startup Settings → Safe Mode, then uninstall the suspect software there where its driver cannot load.
  4. Test the memory. Windows Memory Diagnostic, followed by an overnight multi-pass test and one-stick-at-a-time testing if the problem persists. Defective RAM makes innocent drivers look guilty.
  5. Repair Windows files. DISM /Online /Cleanup-Image /RestoreHealth, then sfc /scannow from an admin Command Prompt.
  6. Check the drive. Run chkdsk /f and review the drive maker’s health tool; a driver file being read from a failing disk can load corrupted.

If it still happens

If you need the guilty driver named rather than guessed, Driver Verifier is the tool designed for it, see the DRIVER_VERIFIER_DETECTED_VIOLATION page for how to use it safely. If the crashes predate any software change and memory tests fail, replace the RAM; if memory passes and drivers are clean, System Restore and then drive health are the remaining stops.

Common questions

What is the difference between BAD_POOL_CALLER and BAD_POOL_HEADER? BAD_POOL_CALLER (0xC2) means the invalid pool operation itself was caught as it happened, a bad request. BAD_POOL_HEADER (0x19) means corruption of a pool block’s header was discovered later. Both point to the same causes, a misbehaving driver or failing RAM, and the same fixes.

The crash names a different driver every time. Which one is broken? Rotating blame is the signature of bad RAM rather than a bad driver. When memory corrupts data randomly, whichever driver touches the corrupted pool gets flagged. Test the memory sticks individually before replacing any software.

Related errors

BAD_POOL_HEADER · MEMORY_MANAGEMENT · DRIVER_VERIFIER_DETECTED_VIOLATION · PAGE_FAULT_IN_NONPAGED_AREA