0x18 de Verificação de Bugs: REFERENCE_BY_POINTER
O bug REFERENCE_BY_POINTER marcar 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 ao usar o computador, consulte Solucionar erros de tela azul.
Parâmetros de REFERENCE_BY_POINTER
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 |
Reservado |
4 |
Reservado |
Causa
A contagem de referência de um objeto é inválida para o estado atual do objeto. Cada vez que um driver usa um ponteiro para um objeto , o driver chama uma rotina de kernel para aumentar a contagem de referência do objeto em um. Quando o driver é feito com o ponteiro , o driver chama outra rotina de kernel para diminuir a contagem de referência em um.
Os drivers devem corresponder chamadas às rotinas que aumentam (referência) e diminuem (desreferência) a contagem de referência. Esse bug marcar é causado por uma inconsistência na contagem de referência 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. Esse bug marcar pode ocorrer porque a contagem de referência de um objeto vai para zero enquanto ainda há identificadores abertos para o objeto. Também pode ocorrer quando a contagem de referência do objeto cair abaixo de zero, independentemente de haver ou não identificadores abertos para o objeto.
Resolução
Verifique se o driver corresponde às chamadas às rotinas que aumentam e diminuem a contagem de referência do objeto. Verifique se o driver não faz chamadas extras para rotinas que desreferenciam o objeto (consulte 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 o bug marcar e pode ser útil para determinar a causa raiz.
Para localizar o identificador e a contagem de ponteiros no objeto , use o comando !object debugger.
kd> ! object address
Onde address é 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 um único passo adiante no código com falha.
Se você não estiver equipado para usar o depurador do Windows para trabalhar nesse problema, poderá usar algumas técnicas básicas de solução de problemas.
Verifique a Visualizador de Eventos de Logon do Sistema para obter mensagens de erro adicionais que possam ajudar a identificar o dispositivo ou driver que está causando esse bug marcar.
Se um driver for identificado na mensagem de verificação de bug, desative o driver ou verifique com o fabricante as atualizações de driver.
Confirme se qualquer 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 informações adicionais de solução de problemas gerais, consulte Dados de tela azul.
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de