0xC2 de Verificação de Bugs: BAD_POOL_CALLER
O bug BAD_POOL_CALLER marcar tem um valor de 0x000000C2. Isso indica que o thread atual está fazendo uma solicitação de pool incorreta.
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 BAD_POOL_CALLER
O parâmetro 1 indica o tipo de violação.
Parâmetro 1 | Parâmetro 2 | Parâmetro 3 | Parâmetro 4 | Causa do erro |
---|---|---|---|---|
0x00 |
0 |
Tipo de pool |
Marca de pool |
O thread atual solicitou uma alocação de pool de bytes zero. |
0x01, 0x02, 0x04 |
Ponteiro para o cabeçalho do pool |
Primeira parte do conteúdo do cabeçalho do pool |
0 |
O cabeçalho do pool foi corrompido. |
0x06 |
Reservado |
Ponteiro para o cabeçalho do pool |
Conteúdo do cabeçalho do pool |
O thread atual tentou liberar o pool, que já foi liberado. |
0x07 |
Reservado |
Conteúdo do cabeçalho do pool |
Endereço do bloco de pool que está sendo liberado |
O thread atual tentou liberar o pool, que já foi liberado. |
0x08 |
IRQL atual |
Tipo de pool |
Tamanho da alocação, em bytes |
O thread atual tentou alocar o pool em um IRQL inválido. |
0x09 |
IRQL atual |
Tipo de pool |
Endereço do pool |
O thread atual tentou liberar o pool em um IRQL inválido. |
0x0A |
Endereço do pool |
Marca do alocador |
Marca que está sendo usada na tentativa gratuita |
O thread atual tentou liberar a memória do pool usando a marca errada. (A memória pode pertencer a outro componente.) |
0x0B, 0x0C, ou 0x0D |
Endereço do pool |
Marca de alocação do pool |
Ponteiro de processo de cota inválido |
O thread atual tentou liberar uma cota em uma alocação de pool corrompida. |
0x40 |
Endereço inicial |
Início do espaço de endereço do sistema |
0 |
O thread atual tentou liberar o pool de kernel em um endereço de modo de usuário. |
0x41 |
Endereço inicial |
Quadro de página físico |
Quadro de página físico mais alto |
O thread atual tentou liberar um endereço de pool não alocado não alocado. |
0x42 ou 0x43 |
Endereço que está sendo liberado |
0 |
0 |
O thread atual tentou liberar um endereço virtual que nunca esteve em nenhum pool. |
0x44 |
Endereço inicial |
Reservado |
0 |
O thread atual tentou liberar um endereço de pool não alocado não alocado. |
0x46 |
Endereço inicial |
0 |
0 |
O thread atual tentou liberar um endereço de pool inválido. |
0x47 |
Endereço inicial |
Quadro de página físico |
Quadro de página físico mais alto |
O thread atual tentou liberar um endereço de pool não alocado não alocado. |
0x48 |
Endereço inicial |
Reservado |
Reservado |
O thread atual tentou liberar um endereço de pool de páginas não alocado. |
0x50 |
Endereço inicial |
Iniciar deslocamento, em páginas, desde o início do pool de páginas |
Tamanho do pool de páginas, em bytes |
O thread atual tentou liberar um endereço de pool de páginas não alocado. |
0x60 |
Endereço inicial |
0 |
0 |
O thread atual tentou liberar um endereço de memória contíguo inválido. (O chamador de MmFreeContiguousMemory está passando um ponteiro inválido.) |
0x99 |
Endereço que está sendo liberado |
0 |
0 |
O thread atual tentou liberar o pool com um endereço inválido. (Esse código também pode indicar corrupção no cabeçalho do pool.) |
0x9A |
Tipo de pool |
Número de bytes solicitados |
Marca de pool |
O thread atual marcou uma solicitação de alocação MUST_SUCCEED. (Não há mais suporte para esse tipo de pool.) |
0x9B |
Tipo de pool |
Número de bytes solicitados |
Endereço do chamador |
O thread atual tentou alocar um pool com uma marca de 0 (Isso seria inexejável e possivelmente corromperia as tabelas de marcas existentes.) |
0x9C |
Tipo de pool |
Número de bytes solicitados |
Endereço do chamador |
O thread atual tentou alocar um pool com uma marca de "BIG". (Isso seria inexejável e poderia corromper as tabelas de marcas existentes.) |
0x9D |
Marca de pool incorreta usada |
Tipo de pool |
Endereço do chamador |
O thread atual tentou alocar um pool com uma marca que não contém letras ou dígitos. O uso dessas marcas dificulta os problemas do pool de acompanhamento. |
0x41286 |
Reservado |
Reservado |
Iniciar deslocamento do início do pool de páginas, em páginas |
O thread atual tentou liberar um endereço de pool de páginas no meio de uma alocação. |
Os códigos _POOL_TYPE são enumerados em Ntddk.h. Em particular, 0 indica pool nãopagado e 1 indica pool paginado.
Causa
Uma solicitação de pool inválida foi feita pelo thread atual. Normalmente, isso está em um nível IRQL ruim ou liberando duas vezes a mesma alocação de memória, etc.
Resolução
Ative o Verificador de Driver com opções de pool de memória habilitadas, para obter mais informações sobre esses erros e localizar o driver de falha.
Driver Verifier
O Verificador de Driver é uma ferramenta executada em tempo real para examinar o comportamento dos drivers. Se ele vir erros na execução do código do driver, ele criará proativamente uma exceção para permitir que essa parte do código do driver seja examinada ainda mais. O gerenciador de verificador de driver é integrado ao Windows e está disponível em todos os computadores Windows. Para iniciar o gerenciador de verificador de driver, digite Verificador em um prompt de comando. Você pode configurar quais drivers deseja verificar. O código que verifica os drivers adiciona sobrecarga à medida que é executado, portanto, tente verificar o menor número possível de drivers. Para obter mais informações, consulte Verificador de Driver.
Diagnóstico de Memória do Windows
Em particular, para situações com corrupção no pool de memória, execute a ferramenta Diagnóstico de Memória do Windows para tentar isolar a memória física como uma causa. Na caixa de pesquisa do painel de controle, digite Memória 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.