0xEA de Verificação de Bugs: THREAD_STUCK_IN_DEVICE_DRIVER
O bug THREAD_STUCK_IN_DEVICE_DRIVER marcar tem um valor de 0x000000EA. Isso indica que um thread em um driver de dispositivo está girando sem parar.
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 THREAD_STUCK_IN_DEVICE_DRIVER
Parâmetro | Descrição |
---|---|
1 |
Um ponteiro para o objeto thread preso |
2 |
Um ponteiro para o objeto DEFERRED_WATCHDOG |
3 |
Um ponteiro para o nome do driver ofensivo |
4 |
No depurador de kernel: O número de vezes que o bug "interceptado" marcar 0xEA foi atingido Na tela azul: 1 |
Causa
Um driver de dispositivo está girando em um loop infinito, provavelmente aguardando o hardware ficar ocioso.
Isso geralmente indica um problema com o hardware em si ou com o driver do dispositivo programando o hardware incorretamente. Frequentemente, isso é resultado de um vídeo ruim cartão ou de um driver de exibição ruim.
Resolução
A extensão de depuração !analyze exibe informações sobre o bug marcar e pode ser útil para determinar a causa raiz.
Use o comando .thread (Definir Contexto de Registro) junto com o Parâmetro 1. Em seguida, use kb (Exibir Backtrace de Pilha) para localizar o local em que o thread está preso.
Se o depurador de kernel já estiver conectado e em execução quando o Windows detectar uma condição de tempo limite. Em seguida, DbgBreakPoint será chamado em vez de KeBugCheckEx. Uma mensagem detalhada será impressa no depurador. Consulte Envio de saída para a depuraçãopara obter mais informações.
Essa mensagem incluirá o que teria sido o bug marcar parâmetros. Como nenhum bug real marcar foi emitido, o comando .bugcheck (Exibir Dados de Verificação de Bugs) não será útil. Os quatro parâmetros também podem ser recuperados das variáveis globais do Watchdog usando dd watchdog!g_WdBugCheckData L5" em um sistema de 32 bits ou dq watchdog!g_WdBugCheckData L5" em um sistema de 64 bits.
Depurar esse erro de maneira interativa, como isso, permitirá que você encontre um thread ofensivo, defina pontos de interrupção nele e use g (Go) para retornar ao código giratório para depurá-lo ainda mais.
Em computadores multiprocessadores (build do sistema operacional 3790 ou anterior), você poderá atingir um tempo limite se o thread giratório for interrompido por uma interrupção de hardware e uma rotina ISR ou DPC estiver em execução no momento do bug marcar. Isso ocorre porque o item de trabalho do tempo limite pode ser entregue e manipulado na segunda CPU e ao mesmo tempo. Se isso ocorrer, você deverá examinar mais profundamente a pilha do thread ofensivo para determinar o código de rotação que causou o tempo limite. Use o comando dds (Exibir Palavras e Símbolos) para fazer isso.