Verificação de bugs 0x18: REFERENCE_BY_POINTER
A verificação de bug REFERENCE_BY_POINTER tem um valor de 0x00000018. Isso indica que a contagem de referência de um objeto é ilegal para o estado atual do objeto.
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.
REFERENCE_BY_POINTER Parâmetros
Parâmetro | Descrição |
---|---|
1 |
Tipo de objeto do objeto cuja contagem de referência está sendo reduzida. |
2 |
Objeto cuja contagem de referência está sendo reduzida. |
3 |
Reserved |
4 |
Reserved |
Causa
A contagem de referência de um objeto é ilegal para o estado atual do objeto. Toda vez que um driver usa um ponteiro para um objeto, o driver chama uma rotina do kernel para aumentar a contagem de referência do objeto em um. Quando o driver termina de usar o ponteiro, ele chama outra rotina do kernel para diminuir a contagem de referência em um.
Os drivers devem corresponder chamadas às rotinas que aumentam (referência) e diminuem (desreferenciam) a contagem de referência. Essa verificação de bugs é causada por uma inconsistência na contagem de referências do objeto. Normalmente, a inconsistência é causada por um driver que diminui a contagem de referência de um objeto muitas vezes, fazendo chamadas extras que desreferenciam o objeto. Essa verificação de bugs pode ocorrer porque a contagem de referências de um objeto chega a zero enquanto ainda há identificadores abertos para o objeto. Isso também pode ocorrer quando a contagem de referências do objeto cai abaixo de zero, independentemente de haver ou não identificadores abertos para o objeto.
Resolução
Certifique-se de que o driver corresponda às chamadas para as rotinas que aumentam e diminuem a contagem de referência do objeto. Certifique-se de que seu driver não faça chamadas extras para rotinas que desreferenciam o objeto (consulte o Parâmetro 2).
Você pode usar um depurador para ajudar a analisar esse problema. Para obter mais informações, consulte Análise de despejo de memória usando os depuradores do Windows (WinDbg). A extensão de depuração !analyze exibe informações sobre a verificação de bugs e pode ser útil para determinar a causa raiz.
Para localizar a contagem de identificadores e ponteiros no objeto, use o comando do depurador !object.
kd> !object endereço
Onde endereço é o endereço do objeto fornecido no Parâmetro 2.
Você também pode definir um ponto de interrupção no código que leva a esse código de parada e tentar avançar uma única vez para o código de falha.
Se você não estiver equipado para usar o depurador do Windows para resolver esse problema, use algumas técnicas básicas de solução de problemas.
Verifique se há mensagens de erro adicionais no log do sistema no Visualizador de Eventos que possam ajudar a identificar o dispositivo ou o driver que está causando a verificação de bugs.
Se um driver for identificado na mensagem de verificação de bugs, desabilite o driver ou verifique com o fabricante se há atualizações de driver.
Confirme se o novo hardware instalado é compatível com a versão instalada do Windows. Por exemplo, você pode obter informações sobre o hardware necessário em Especificações do Windows 10.
Para obter mais informações gerais sobre solução de problemas, consulte Analisar dados de tela azul de verificação de bugs.