PROCESS_HAS_LOCKED_PAGES

Code: 0x76 (118)

As HRESULT:As NTSTATUS:

Parameters

ParameterDescription
0x00The pointer to the process object
0x01MDL specified by the driver

Description

The PROCESS_HAS_LOCKED_PAGES bug check has a value of 0x00000076. This bug check indicates that a driver failed to release locked pages after an I/O operation, or that it attempted to unlock pages that were already unlocked.

Important

This article is for programmers. If you're a customer who has received a blue screen error code while using your computer, see Troubleshoot blue screen errors.

Cause

The driver either failed to unlock pages that it locked (parameter 1 value is 0x0), or the driver is attempting to unlock pages that have not been locked or that have already been unlocked (parameter 1 value is 0x1).

Resolution

The !analyze debug extension displays information about the bug check and can be helpful in determining the root cause.

If the parameter 1 value is 0x0

First use the !search extension on the current process pointer throughout all of physical memory. This extension might find at least one memory descriptor list (MDL) that points to the current process. Next, use !search on each MDL that you find to obtain the I/O request packet (IRP) that points to the current process. From this IRP, you can identify which driver is leaking the pages.

Otherwise, you can detect which driver caused the error by editing the registry:

  1. In the \\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management registry key, create or edit the TrackLockedPages value, and then set it equal to DWORD 1.
  2. Restart the computer.

The system then saves stack traces, so you can easily identify the driver that caused the problem. If the driver causes the same error again, bug check 0xCB (DRIVER_LEFT_LOCKED_PAGES_IN_PROCESS) is issued, and the name of the driver that causes this error is displayed on the blue screen and stored in memory at the location (PUNICODE_STRING) KiBugCheckDriver.

If the parameter 1 value is 0x1

Examine the driver source code that locks and unlocks memory, and try to locate an instance where memory is unlocked without first being locked.

Article text from the Windows driver documentation (opens in a new tab), by Microsoft, under the CC BY 4.0 (opens in a new tab) licence.

Associated Modules

ModuleCodeFound inDescription
EventCreate.exe0x7678.11011%1
KernelBase.dll0x7678.1The verify-on-write switch parameter value is not correct.
appmgr.dll0x7678.11011Software Installation was unable to retrieve the list of categories from the DC. The following error was encountered: %1
dsreg.dll0x761011Json Request Failed. Exit code: %1. httpStatus: %2 Server response: %3.
iscsiexe.dll0x7678.11011The evaluation period for the iSCSI initiator service has passed.
kernel32.dll0x7678.11011The verify-on-write switch parameter value is not correct.
nslookup.exe0x7678.11011, recursion avail.
sc.exe0x7678.11011DESCRIPTION: Queries the service security identifier (SID) type setting of a service. If this setting is "unrestricted", the Service Control Manager (SCM) will add this service's SID to the service process token when the service process starts the next time due to the first service in the process being started. This setting is valid only for Win32 user mode services. If this setting is "restricted", the Service Control Manager (SCM) will add this service's SID to the service process token when the service process starts the next time due to the first service in the process being started. In addition, this service's SID will also be added to the restricting SID list in the process token. The process token will be a restricted token. See MSDN for details on restricted token. This setting is valid only for Win32 user mode services. In addition, for a share process service, all services cohosted in the process must have this SID type set for this to take effect. If this setting is "none", the SCM will not add the service's SID to the service process token. USAGE: sc qsidtype [service name]
webservices.dll0x7678.11011The HTTP server did not find an acceptable response format.
win32k.sys0x7678.1IBeam
win32kbase.sys0x761011IBeam
11 entries