Verificação de bugs 0x19: BAD_POOL_HEADER
A verificação de bugs BAD_POOL_HEADER tem um valor de 0x00000019. Isso indica que um cabeçalho de pool está corrompido.
Importante
Este artigo é para programadores. Se você for um cliente que recebeu um código de erro de tela azul enquanto estava usando o computador, confira Solucionar problemas de erros de tela azul.
BAD_POOL_HEADER Parâmetros
Parâmetro 1 indica o tipo de violação. O significado dos outros parâmetros depende do valor do Parâmetro 1.
Parâmetro 1 | Parâmetro 2 | Parâmetro 3 | Parâmetro 4 | Causa do erro |
---|---|---|---|---|
0x2 |
A entrada do pool está sendo verificada |
O tamanho do bloco do pool |
0 |
A verificação do padrão de pool especial falhou. (O proprietário provavelmente corrompeu o bloco do pool). |
0x3 |
A entrada do pool está sendo verificada |
O valor da lista livre do flink de retorno de leitura |
O valor da lista livre do blink de retorno de leitura |
A lista livre do pool está corrompida. (Em uma lista íntegra, os valores dos parâmetros 2, 3 e 4 devem ser idênticos). |
0x5 |
Uma das entradas do pool |
Reserved |
A outra entrada do pool |
Um par de entradas de pool adjacentes tem cabeçalhos que se contradizem. Pelo menos um deles está corrompido. |
0x6 |
Uma entrada calculada incorretamente |
Reserved |
A entrada inválida que causou o erro de cálculo |
O tamanho anterior do cabeçalho do bloco do pool é muito grande. |
0x7 |
0 |
Reserved |
A entrada inválida do pool |
O tamanho do cabeçalho do bloco do pool está corrompido. |
0x8 |
0 |
Reserved |
A entrada inválida do pool |
O tamanho do cabeçalho do bloco do pool é zero. |
0x9 |
Uma entrada calculada incorretamente |
Reserved |
A entrada inválida que causou o erro de cálculo |
O tamanho do cabeçalho do bloco do pool está corrompido (é muito grande). |
0xA |
A entrada do pool que deveria ter sido encontrada |
Reserved |
O endereço virtual da página que deveria conter a entrada do pool |
O tamanho do cabeçalho do bloco do pool está corrompido. |
0xD, 0xE, 0xF, 0x23, 0x24, 0x25 |
Reservado |
Reservado |
Reservado |
O cabeçalho do pool de um bloco liberado foi modificado depois que ele foi liberado. Normalmente, isso não é culpa do proprietário anterior do bloco liberado, geralmente (mas nem sempre), isso se deve ao fato de o bloco anterior ao bloco liberado ter sido ultrapassado. |
0x20 |
A entrada do pool que deveria ter sido encontrada |
A próxima entrada do pool |
Reserved |
O tamanho do cabeçalho do bloco do pool está corrompido. |
0X21 |
O ponteiro do pool sendo liberado |
O número de bytes alocados para o bloco de pool |
O valor corrompido encontrado após o bloco de pool |
Os dados após a liberação do bloco de pool estão corrompidos. Normalmente, isso significa que o consumidor (pilha de chamadas) ultrapassou o bloco. |
0X22 |
O endereço que está sendo liberado |
Reservado |
Reservado |
Um endereço que está sendo liberado não tem uma entrada de rastreamento. Isso geralmente ocorre porque a pilha de chamadas está tentando liberar um ponteiro que já foi liberado ou que nunca foi alocado. |
Causa
O pool já está corrompido no momento da solicitação atual.
Isso pode ou não ser devido ao chamador.
Resolução
Os links de pool internos devem ser percorridos usando o depurador de kernel para descobrir uma possível causa do problema.
Em seguida, você pode usar o pool especial para as marcas de pool suspeitas ou usar a opção "Special Pool" do verificador de driver no driver suspeito. A extensão !analyze pode ser útil para identificar o driver suspeito, mas esse geralmente não é o caso dos corruptores de pool.
Use as etapas descritas em Analisar dados de tela azul de verificação de bugs para coletar os parâmetros do código de parada. Use os parâmetros de código de parada para determinar o tipo específico de comportamento de código que você está trabalhando para rastrear.
Driver Verifier
O verificador de driver é uma ferramenta que é executada em tempo real para examinar o comportamento dos drivers. Se for visto erros na execução do código do driver, ele cria de forma proativa uma exceção para permitir que essa parte do código do driver seja examinada mais detalhadamente. O gerenciador do verificador de driver é incorporado no Windows e está disponível em todos os PCs com Windows. Para iniciar o gerenciador do verificador de driver, digite verifier em um prompt de comando. Você pode configurar quais drivers gostaria de verificar. O código que verifica os drivers adiciona sobrecarga à medida que é executado, então tente e verifique o menor número possível de drivers. Para obter mais informações, consulte Driver Verifier.
Windows Memory Diagnostics
Se essa verificação de bugs aparecer de forma inconsistente, ela pode estar relacionada a uma memória física defeituosa.
Execute a ferramenta de Diagnóstico de memória do Windows para testar a memória. Na caixa de pesquisa do painel de controle, digite Memory e selecione Diagnosticar problemas de memória do computador. Depois que o teste for executado, use o Visualizador de eventos para exibir os resultados no log do sistema. Procure a entrada MemoryDiagnostics-Results para exibir os resultados.