"STOP 0x00000076 - PROCESS_HAS_LOCKED_PAGES" error message in Windows 2000, Windows XP Professional, Windows Server 2003, Windows Server 2008, Windows Vista and Windows 7

Important This article contains information about modifying the registry. Before you modify the registry, make sure to back it up and make sure that you understand how to restore the registry if a problem occurs. For information about how to back up, restore, and edit the registry, click the following article number to view the article in the Microsoft Knowledge Base:
256986 Description of the Microsoft Windows Registry


Windows based computers listed in the applies to section may display one of the following error messages on a blue screen:

STOP: 0x00000076 (0xY,0xY,0xY,0xY) PROCESS_HAS_LOCKED_PAGES
The parameters in these error messages vary, depending on the programs in use and the system configuration.

More Information

Warning If you use Registry Editor incorrectly, you may cause serious problems that may require you to reinstall your operating system. Microsoft cannot guarantee that you can solve problems that result from using Registry Editor incorrectly. Use Registry Editor at your own risk.

The "STOP: 0x00000076 (0xY,0xY,0xY,0xY) PROCESS_HAS_LOCKED_PAGES" error message is caused by a driver not cleaning up completely after an I/O operation.

Parameter 1 - 0
Parameter 2 - process address
Parameter 3 - number of locked pages
Parameter 4 - pointer to driver stacks (if enabled) or 0 if not
Windows includes a registry value that you can use to save stack traces that enable you to identify the problem driver.

Note Using DriverVerifier to enable the Pool Tracking option will result in the same behavior in Vista, 2008, Win7 and 2008 R2 as setting the registry value TrackLockedPages to 1.

Use Registry Editor (Regedt32.exe) to view the following registry key:

HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management
Add the following registry value, and then restart your computer:

Value Name: TrackLockedPages
Value Type: REG_DWORD
Value Data: 1
Radix: hexadecimal
After you make this change, Windows saves stack traces so that you can identify the problem driver. There is no other way to determine which driver is neglecting to clean up the I/O operations. After you enable this flag, if the driver commits the error again, you see the following error message:

Parameter 1 - The calling address in the driver that locked the pages
Parameter 2 - The caller of the calling address in the driver that locked the pages
Parameter 3 - A pointer to the MDL containing the locked pages
Parameter 4 - The problem driver's name (Unicode string)
The problem driver's name is listed on the blue "Stop" screen and is available for dumping again as the fourth parameter in the "Stop" data.

After you identify and update or remove the problem driver, you should remove the TrackLockedPages value from the registry.