0x76 de Verificação de Bugs: PROCESS_HAS_LOCKED_PAGES
O bug PROCESS_HAS_LOCKED_PAGES marcar tem um valor de 0x00000076. Esse bug marcar indica que um driver falhou ao liberar páginas bloqueadas após uma operação de E/S ou que tentou desbloquear páginas que já estavam desbloqueadas.
Importante
Este artigo é para programadores. Se você for um cliente que recebeu um código de erro de tela azul ao usar o computador, consulte Solucionar erros de tela azul.
Parâmetros de PROCESS_HAS_LOCKED_PAGES
Parâmetro 1 | Parâmetro 2 | Parâmetro 3 | Parâmetro 4 | Causa do erro |
---|---|---|---|---|
0x00 |
O ponteiro para o objeto de processo |
O número de páginas bloqueadas |
O ponteiro para pilhas de driver (se elas estiverem habilitadas). Caso contrário, esse parâmetro será zero. |
O processo que está sendo encerrado bloqueou páginas de memória. O driver deve desbloquear qualquer memória que possa ter bloqueado em um processo, antes que o processo seja encerrado. |
0x01 |
MDL especificado pelo driver |
Número atual de páginas de memória bloqueadas nesse processo |
Um ponteiro para pilhas de driver para esse processo (se eles estiverem habilitados). Caso contrário, esse parâmetro será zero. |
O driver está tentando desbloquear páginas de memória do processo que não estão bloqueadas. |
Causa
O driver não conseguiu desbloquear páginas bloqueadas (o valor do parâmetro 1 é 0x0) ou o driver está tentando desbloquear páginas que não foram bloqueadas ou que já foram desbloqueadas (o valor do parâmetro 1 é 0x1).
Resolução
A extensão de depuração !analyze exibe informações sobre o bug marcar e pode ser útil para determinar a causa raiz.
Se o valor do parâmetro 1 for 0x0
Primeiro, use a extensão !search no ponteiro do processo atual em toda a memória física. Essa extensão pode encontrar pelo menos uma MDL (lista de descritores de memória) que aponta para o processo atual. Em seguida, use !search em cada MDL encontrado para obter o IRP (pacote de solicitação de E/S) que aponta para o processo atual. Nesse IRP, você pode identificar qual driver está vazando as páginas.
Caso contrário, você poderá detectar qual driver causou o erro editando o registro:
Na \\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management chave do Registro, crie ou edite o valor TrackLockedPages e defina-o igual a DWORD 1.
Reinicie o computador.
Em seguida, o sistema salva rastreamentos de pilha para que você possa identificar facilmente o driver que causou o problema. Se o driver causar o mesmo erro novamente, o bug marcar 0xCB (DRIVER_LEFT_LOCKED_PAGES_IN_PROCESS) será emitido e o nome do driver que causa esse erro será exibido na tela azul e armazenado na memória no local (PUNICODE_STRING) KiBugCheckDriver.
Se o valor do parâmetro 1 for 0x1
Examine o código-fonte do driver que bloqueia e desbloqueia a memória e tente localizar uma instância em que a memória é desbloqueada sem primeiro ser bloqueada.