Como resolver erros internos no tempo de execução do .NET

6

Várias semanas atrás, o laptop da minha empresa começou a ter alguns problemas estranhos. Eu não podia mais iniciar o Microsoft Developer Web Server (via Visual Studio- > Debug). Mais tarde descobri que não conseguia executar nenhuma aplicação .NET.

Ao falar com o especialista Microsoft CLR depois de revisar meus arquivos dmp, ele disse

  1. When loaded into your process, 8 bytes at offset 0×168 into the .exe files are being set to 0. This is the issue that is causing the CLR to fail. These bits are set correctly in the file you provided to me.

  2. C:\Windows\System32\Detoured.dll is loaded into the process. This means to me that the detours library is being used on your machine to modify the behavior of these processes.

Também descobri que, quando inicializo no modo de segurança, tudo funciona.

Além disso, descobri que, se clico com o botão direito do mouse em um executável .NET, e escolho "Executar como" e insiro as credenciais do usuário conectado no momento, o aplicativo funciona. Isso simplesmente não funciona, se eu apenas clicar duas vezes no aplicativo.

Há muitas mensagens de eventos do sistema e erros do tipo Dr. Watson. Aqui estão alguns que eu recebo:

Ao iniciar o MS Developer Web Server a partir do Visual Studio, o pop-up da caixa Mensagem diz:

WebDev.WebServer40.exe has encountered a problem and needs
to close. We are sorry for the inconvenience.

Entradas do log de eventos do sistema VSHost:

Event 1:
Application: MyWebSite.vshost.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an internal error
in the .NET Runtime at IP 791A8BBD (79140000) with exit code 80131506.

Event 2:
Faulting application MyWebSite.vshost.exe, version 10.0.30319.1, 
stamp 4ba2084b, faulting module clr.dll, version 4.0.30319.1, 
stamp 4ba1d9ef, debug? 0, fault address 0x00068bbd.

Entradas do registro de eventos do sistema para executar aplicativos de terceiros:

Source: Application Popup
Description: Application popup: #APPNAME#.exe – Application Error : The 
application failed to initialize properly (0xc000007b). Click on OK 
to terminate the application.

Os aplicativos que eu construí que usam logs de eventos do sistema .NET v4 Framework dizem:

Source: .NET Runtime
Framework Version: v4.0.30319
Description: The process was terminated due to an internal error in the 
.NET Runtime at IP 791A8BBD (7914000) with exit code 80131506.

Aplicativos que eu construí que usam logs de eventos do sistema .NET v2 Framework dizem:

Source: .NET Runtime
Description: .NET Runtime version 2.0.50727.3053 – Fatal Execution 
Engine Error (7A097706) (80131506)

Aqui mais detalhes no meu blog - incluindo tudo o que tentei até agora e mais detalhes e narrativas.

No que diz respeito aos pontos de restauração, meu ponto de restauração mais antigo é há algumas semanas, no qual ainda tive esse problema, portanto, não acho que restaurar esse ponto ajude muito.

Como posso descobrir qual processo está causando o problema e consertar o computador?

    
por Jim W 01.10.2010 / 03:31

3 respostas

3

Como você diz que o problema não acontece no modo de segurança, fica claro que isso é causado por um aplicativo, complemento ou driver instalado.

Em vista do esforço que você já investiu neste projeto, aconselho reformatar o disco rígido e reinstalar o XP, depois reinstalar todos os produtos um a um, reinicializando para verificar se o problema retornou. Como alternativa, você pode desinstalar produtos usando o Revo Uninstaller, mas até mesmo o Revo pode perder uma instalação particularmente sorrateira.

Francamente, os arquivos executáveis que estão sendo modificados quando lançados têm o cheiro de uma infecção viral, e é por isso que eu recomendo a reformatação neste caso.

    
por 05.10.2010 / 07:54
0

Sua resposta pode ter sido no primeiro parágrafo - remover Detours. Vá para Adicionar / Remover Programas, encontre Detours e remova-o.

Detours: link

    
por 06.10.2010 / 00:37
0

Eu tentaria usar o Dependency Walker . Faça o perfil do seu programa e salve a saída. Inicialize no modo de segurança e faça o perfil novamente. A comparação da saída pode fornecer mais informações sobre quando o programa está sendo modificado.

Você também pode tentar usar o WinDbg a partir das Ferramentas de depuração para Windows . (Esse link é para desenvolvedores de drivers, mas eu usei o WinDbg para .NET.) Para obter a saída mais depurada, você precisará do Windows Symbol Package para XP também.

    
por 06.10.2010 / 21:47