Previous Next

Memory Pool Tracking

Memory Pool Tracking monitors the memory allocations made by the driver. At the time that the driver is unloaded, Driver Verifier ensures that all allocations made by the driver have been freed.

Unfreed memory allocations (also called memory leaks) are a common cause of lowered operating system performance. These can fragment the system pools and eventually cause system crashes.

When this option is active, Driver Verifier will issue bug check 0xC4 (with Parameter 1 equal to 0x60) if a driver unloads without freeing all its allocations.

If Driver Verifier issues this bug check with Parameter 1 equal to 0x51, 0x52, 0x53, 0x54, or 0x59, the driver has written to memory outside of its allocations. In this case, you should enable Special Memory Pool to locate the source of the error.

See Bug Check 0xC4 (DRIVER_VERIFIER_DETECTED_VIOLATION) for a list of the bug check parameters.

Monitoring Memory Pool Tracking

Memory pool allocation statistics can be monitored separately for each driver being verified. These statistics can be displayed by the Driver Verifier Manager graphical interface, the verifier.exe command line, or in a log file. See Monitoring Individual Counters for details.

The kernel debugger extension !verifier 0x3 can be used to locate outstanding memory allocations after the driver is unloaded, or to track the current allocations while the driver is running. This extension also shows the pool tag, the size of the pool, and the address of the allocator for each allocation. For information about debugger extensions, see Debugging Tools for NT-Based Operating Systems.

Activating This Option

The Memory Pool Tracking option can be activated by using the Driver Verifier Manager graphical interface or the verifier.exe command line. This activation will take effect after the next boot. See Selecting Driver Verifier Options for details.

Graphics Drivers

The Memory Pool Tracking option is not used for graphics drivers. If selected, it has no effect.