A maneira mais fácil de reduzir a causa de uma falha é usar o WinDbg para analisar o arquivo de despejo que as janelas criaram quando a falha ocorreu:
- Faça o download do MS 'SDK se você ainda não tiver o WinDbg
- Instale o WinDbg, encontrei seu instalador diretamente entre o conteúdo baixado em
...\Windows Kits\WDK\Installers\X64 Debuggers And Tools-x64_en-us.msi
- Encontre seus arquivos de despejo de memória, geralmente em
C:\Windows\Minidump\
- Basta arrastar e soltar o arquivo
.dmp
na janela do WinDbg e pressionar o link !analyze -v
que aparece dentro do WinDbg, então dê uma olhada no texto que aparece.
Uma das partes mais interessantes é a parte chamada STACK_TEXT
.
Apenas ler os nomes das chamadas, geralmente dá uma boa pista.
Aqui está um exemplo de algumas linhas da causa de uma das minhas falhas mais recentes. Eu removi o texto insignificante onde diz "[...]" para torná-lo mais legível.
STACK_TEXT:
ffffd000'2a4465f0 [...] : win32kbase!ApplyPathsModality+0x286
ffffd000'2a446690 [...] : win32kbase!DrvSetDisplayConfig+0x553
ffffd000'2a4467e0 [...] : win32kbase!xxxUserSetDisplayConfig+0x24b
ffffd000'2a446950 [...] : win32kbase!VideoPortCalloutThread+0x4c7
ffffd000'2a446a90 [...] : win32kbase!xxxCreateSystemThreads+0x5b
ffffd000'2a446ad0 [...] : win32kfull!NtUserCallNoParam+0x2d
ffffd000'2a446b00 [...] : nt!KiSystemServiceCopyEnd+0x13
000000dd'940ffee8 [...] : 0x00007ffa'bef67274
Apenas lendo esses nomes, praticamente sugere um problema de driver de vídeo. Então, no meu caso, vou tentar encontrar drivers de vídeo atualizados.
Ao longo dos anos, descobri que praticamente todas as falhas no Windows pareciam ser causadas por algum driver desonesto, geralmente os drivers gráficos.
No entanto, não sou especialista em internos do kernel do Windows, portanto há alguma chance de que as informações que você encontra nos arquivos de despejo possam ser enganosas. Mas pelo menos pode ajudar você a fazer algumas suposições.