O que significa a mensagem de erro 0xC000041D?

O que significa a mensagem de erro 0xC000041D?

Naveguei com o iexplore e travou com a mensagem

C000041D

ou seja

Exceção não tratada em 0x7149B7C0 em iexplore.exe: 0xC000041D: uma exceção não tratada foi encontrada durante um retorno de chamada do usuário.

AFAIK 0x significa código hexadecimal, 714...é o contador do programa e C00...é o código de erro. O que posso fazer para investigar esse bug? Eu tenho o Visual Studio em execução que capturou o programa.

Captura de tela
(Clique na imagem para ampliar)

Responder1

Descobri que 0xC000041d = STATUS_FATAL_USER_CALLBACK_EXCEPTION
O que acontece é que o aplicativo sai com o código anormal 0xc000041d devido ao thread inicial criado pelo aplicativo.
Clique para ler mais e ver a fonte..

Responder2

0xC000041dé umNTSTATUSconstante de código definida no Microsoftntstatus.harquivo de cabeçalho:

O nome da definição ( MessageId) é STATUS_FATAL_USER_CALLBACK_EXCEPTIONe sua descrição é:

"An unhandled exception was encountered during a user callback."

NTSTATUScódigos são normalmente usados ​​ao comunicar informações do sistema, por exemplo, entre o sistema Windows e drivers de dispositivo e, às vezes, entre o Windows e aplicativos:

O significado doNTSTATUSo código também pode ser pesquisado usando a ferramenta de pesquisa de erros da Microsoft:

Como a descrição sugere, o Windows usa esse recurso específicoNTSTATUScódigo quando encontra uma exceção (uma condição anormal) ao chamar um modo de usuário (https://www.tutorialspoint.com/User-Mode-vs-Kernel-Mode) função de retorno de chamada (https://en.wikipedia.org/wiki/Callback_(programação_de_computador)).

Existem muitas situações que podem gerar esta mensagem. Portanto, pesquisar na internet apenasNTSTATUSo código 0xC000041dpossivelmente produzirá resultados não relacionados. Resultados mais relevantes podem aparecer ao incluir também o nome exato do arquivo do processo (neste caso iexplore.exe), o módulo defeituoso (veja abaixo) e/ou talvez até mesmo o endereço exato da memória (neste caso 0x7149B7C0).

Pesquisar o endereço de memória completo pode ser um pouco complicado devido a compilações/versões de compilação ligeiramente diferentes do programa, modelos de execução variados (por exemplo, versões de 32 bits versus 64 bits do Windows) e porque os módulos (.dll, .exe , arquivos .sys etc. que juntos constituem o código do programa em execução) são carregados em endereços base variados. Corresponder apenas os últimos quatro caracteres B7C0do endereço pode ser suficiente para indicar um problema relacionado.

Para realmente depurar o problema, o Visual Studio pode ser usado para visualizar a pilha de chamadas do thread que está causando a exceção:

https://stackoverflow.com/questions/945193/how-do-i-find-the-stack-trace-in-visual-studio

A pilha de chamadas mostra os diferentes módulos e métodos nesses módulos que estavam chamando uns aos outros no momento em que ocorreu a exceção. Os nomes dos módulos podem dar uma indicação do que o programa estava fazendo quando o problema ocorreu.

Se os símbolos (https://devblogs.microsoft.com/devops/understanding-symbol-files-and-visual-studios-symbol-settings/) estão disponíveis para os módulos que estão causando o problema - e talvez até mesmo para os arquivos de código-fonte desses módulos - a depuração se torna mais fácil.

informação relacionada