Partilhar via


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.