Compartilhar via


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:

  1. 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.

  2. 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.