marcar 0x1E de bugs: KMODE_EXCEPTION_NOT_HANDLED
O marcar de bug KMODE_EXCEPTION_NOT_HANDLED tem um valor de 0x0000001E. O bug marcar indica que um programa no modo kernel gerou uma exceção que o manipulador de erros não pegou.
Importante
Este artigo é para programadores. Se você for um cliente da Microsoft e seu computador exibir um código de erro de tela azul, consulte Solucionar problemas de erros de tela azul.
parâmetros de KMODE_EXCEPTION_NOT_HANDLED
Parâmetro | Descrição |
---|---|
1 | O código de exceção que não foi tratado. |
2 | O endereço em que a exceção ocorreu. |
3 | Parâmetro de informações de exceção 0 do registro de exceção. |
4 | Parâmetro de informações de exceção 0 do registro de exceção. |
Causa
Para interpretar esse bug marcar, você deve identificar qual exceção foi gerada.
Os códigos de exceção comuns incluem:
0x80000002: STATUS_DATATYPE_MISALIGNMENT
Uma referência de dados não assinada foi encontrada.
0x80000003: STATUS_BREAKPOINT
Um ponto de interrupção ou ASSERT foi encontrado quando nenhum depurador de kernel foi anexado ao sistema.
0xC0000005: STATUS_ACCESS_VIOLATION
Ocorreu uma violação de acesso à memória. (O parâmetro 4 do bug marcar é o endereço que o driver tentou acessar.)
Para obter uma lista completa de códigos de exceção, consulte Valores NTSTATUS. Os códigos de exceção são definidos em ntstatus.h, um arquivo de cabeçalho que está no Kit de Driver do Windows. Para obter mais informações, consulte Arquivos de cabeçalho no Kit de Driver do Windows.
Comentários
Se você não estiver equipado para depurar esse problema, poderá usar algumas técnicas básicas de solução de problemas descritas nos dados da tela Azul. 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.
Incompatibilidade de hardware
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 de Windows 10.
Driver de dispositivo com falha ou serviço do sistema
Um driver de dispositivo ou serviço do sistema com falha pode causar esse erro. Problemas de hardware, como incompatibilidades de BIOS, conflitos de memória e conflitos de IRQ, também podem gerar esse erro.
Se um driver estiver listado pelo nome no bug marcar mensagem, desabilite ou remova esse driver. Desabilite ou remova os drivers ou serviços adicionados recentemente. Se o erro ocorrer durante a sequência de inicialização e a partição do sistema for formatada como um sistema de arquivos NTFS, você poderá usar o Modo de Segurança para desabilitar o driver no Gerenciador de Dispositivos.
Verifique Visualizador de Eventos de logon do sistema para obter mais mensagens de erro que podem ajudá-lo a identificar o dispositivo ou driver que está causando marcar 0x1E de bugs. Execute também diagnóstico de hardware fornecidas pelo fabricante do sistema, especialmente o verificador de memória. Para obter mais informações sobre essas etapas de solução de problemas, consulte o manual do proprietário para seu computador.
O erro que gera essa mensagem pode ocorrer após a primeira reinicialização durante a Instalação do Windows ou após a conclusão da Instalação. Uma possível causa do erro é uma incompatibilidade do BIOS do sistema. Você pode resolve problemas de BIOS atualizando a versão do BIOS do sistema.
Resolução
Talvez seja difícil obter um rastreamento de pilha ao depurar esse problema. O endereço de exceção (parâmetro 2) deve identificar o driver ou a função que causou o problema.
O código de exceção 0x80000003 indica que um ponto de interrupção ou asserção codificado em código foi atingido, mas o sistema foi iniciado com a opção /NODEBUG
. Esse problema deve ocorrer raramente. Se ocorrer repetidamente, verifique se um depurador de kernel está conectado e se o sistema foi iniciado com a opção /DEBUG
.
Se ocorrer 0x80000002 de código de exceção, o quadro de interceptação fornecerá mais informações.
Causa desconhecida
Se a causa específica da exceção for desconhecida, considere usar o procedimento a seguir para obter um rastreamento de pilha.
Observação
Este procedimento pressupõe que você possa localizar NT!PspUnhandledExceptionInSystemThread
. No entanto, em alguns casos, como em uma falha de violação de acesso, você não poderá encontrar NT!PspUnhandledExceptionInSystemThread
. Nesse caso, procure ntoskrnl!KiDispatchException
por . O terceiro parâmetro passado para essa função é um endereço de quadro de interceptação. Use o comando .trap (quadro de interceptação de exibição) com esse endereço para definir o contexto de registro com o valor correto. Em seguida, você pode fazer rastreamentos de pilha e emitir outros comandos.
Obter um rastreamento de pilha
Para obter um rastreamento de pilha se os procedimentos normais de rastreamento de pilha falharem:
Use o comando kb (display stack backtrace) para exibir parâmetros no rastreamento de pilha. Procure a chamada para
NT!PspUnhandledExceptionInSystemThread
. (Se essa função não estiver listada, consulte a nota anterior.)O primeiro parâmetro a
NT!PspUnhandledExceptionInSystemThread
é um ponteiro para uma estrutura. O ponteiro contém ponteiros para uma instruçãoexcept
:typedef struct _EXCEPTION_POINTERS { PEXCEPTION_RECORD ExceptionRecord; PCONTEXT ContextRecord; } EXCEPTION_POINTERS, *PEXCEPTION_POINTERS; ULONG PspUnhandledExceptionInSystemThread( IN PEXCEPTION_POINTERS ExceptionPointers )
Use o comando dd (memória de exibição) nesse endereço para exibir os dados necessários.
O primeiro valor recuperado é um registro de exceção. Para o registro de exceção, use o comando .exr (exibir registro de exceção).
O segundo valor é um registro de contexto. Para o registro de contexto, use o comando .cxr (registro de contexto de exibição).
Depois que o
.cxr
comando for executado, use okb
comando para exibir um rastreamento de pilha baseado nas informações de registro de contexto. Esse rastreamento de pilha indica a pilha de chamadas em que ocorreu a exceção sem tratamento.
Exemplo de marcar de bugs
O exemplo a seguir mostra um bug marcar 0x1E em um processador x86:
kd> .bugcheck get the bug check data
Bugcheck code 0000001e
Arguments c0000005 8013cd0a 00000000 0362cffff
kd> kb start with a stack trace
FramePtr RetAddr Param1 Param2 Param3 Function Name
8013ed5c 801263ba 00000000 00000000 fe40cb00 NT!_DbgBreakPoint
8013eecc 8013313c 0000001e c0000005 8013cd0a NT!_KeBugCheckEx+0x194
fe40cad0 8013318e fe40caf8 801359ff fe40cb00 NT!PspUnhandledExceptionInSystemThread+0x18
fe40cad8 801359ff fe40cb00 00000000 fe40cb00 NT!PspSystemThreadStartup+0x4a
fe40cf7c 8013cb8e fe43a44c ff6ce388 00000000 NT!_except_handler3+0x47
00000000 00000000 00000000 00000000 00000000 NT!KiThreadStartup+0xe
kd> dd fe40caf8 L2 dump EXCEPTION_POINTERS structure
0xFE40CAF8 fe40cd88 fe40cbc4 ..@...@.
kd> .exr fe40cd88 first DWORD is the exception record
Exception Record @ FE40CD88:
ExceptionCode: c0000005
ExceptionFlags: 00000000
Chained Record: 00000000
ExceptionAddress: 8013cd0a
NumberParameters: 00000002
Parameter[0]: 00000000
Parameter[1]: 0362cfff
kd> .cxr fe40cbc4 second DWORD is the context record
CtxFlags: 00010017
eax=00087000 ebx=00000000 ecx=03ff0000 edx=ff63d000 esi=0362cfff edi=036b3fff
eip=8013cd0a esp=fe40ce50 ebp=fe40cef8 iopl=0 nv dn ei pl nz ac po cy
vip=0 vif=0
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00010617
0x8013cd0a f3a4 rep movsb
kd> kb kb gives stack for context record
ChildEBP RetAddr Args to Child
fe40ce54 80402e09 ff6c4000 ff63d000 03ff0000 NT!_RtlMoveMemory@12+0x3e
fe40ce68 80403c18 ffbc0c28 ff6ce008 ff6c4000 HAL!_HalpCopyBufferMap@20+0x49
fe40ce9c fe43b1e4 ff6cef90 ffbc0c28 ff6ce009 HAL!_IoFlushAdapterBuffers@24+0x148
fe40ceb8 fe4385b4 ff6ce388 6cd00800 ffbc0c28 QIC117!_kdi_FlushDMABuffers@20+0x28
fe40cef8 fe439894 ff6cd008 ffb6c820 fe40cf4c QIC117!_cqd_CmdReadWrite@8+0x26e
fe40cf18 fe437d92 ff6cd008 ffb6c820 ff6e4e50 QIC117!_cqd_DispatchFRB@8+0x210
fe40cf30 fe43a4f5 ff6cd008 ffb6c820 00000000 QIC117!_cqd_ProcessFRB@8+0x134
fe40cf4c 80133184 ff6ce388 00000000 00000000 QIC117!_kdi_ThreadRun@4+0xa9
fe40cf7c 8013cb8e fe43a44c ff6ce388 00000000 NT!_PspSystemThreadStartup@8+0x40
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários