A Aplicação Estoira Com "Erro Interno Em The.NET Tempo De Execução"

Temos uma aplicação escrita contra o. NET 4.0 que no fim-de-semana estoirou, colocando a seguinte mensagem no registo do evento:

Aplicação: PnrRetrieverService.exe Framework Version: v4.0. 30319
Descrição: o processo foi terminado devido a um erro interno em The .NET Runtime at IP 791F9AAA (79140000) with exit code 80131506.

Isto está numa caixa de edição padrão do Windows Server 2003 R2. Pesquisar este erro não revelou nada. pertinente. Por exemplo, isso não está ocorrendo em VS Studio, mas em vez disso em uma caixa de produção; quando o serviço foi reiniciado, ele não experimentou mais problemas.

Como se diagnostica um bug no tempo de execução. net?

Author: klashar, 2010-12-06

13 answers

Com o código de saída 80131506

Essa é uma péssima ideia. Começando com o.NET 4.0, esta exceção termina imediatamente o programa. A causa genérica é a corrupção do Estado do monte de lixo coletado. O que por sua vez é invariavelmente causado por um código não gerido. A localização exata no código em que esta exceção é levantada não é útil, a corrupção geralmente ocorreu bem antes do dano é detectado.

Encontrar a causa exacta para isto vai ser difícil. Reveja qualquer código não gerido que o seu serviço possa estar a usar. Suspeitas de problemas ambientais se não houver um candidato óbvio, scanners malware mal comportados são notórios. Se ele se repete muito mal, então suspeita de problemas de hardware como erros de RAM suave.

 107
Author: Hans Passant, 2010-12-06 15:20:20

Um erro na implementação simultânea da recolha de lixo em x64. Net 4 pode causar isto como indicado na seguinte entrada microsoft KB:

Executionengineexcepção ocorre durante a recolha do lixo

Primeiro deve fazer uma exploração minidump profunda para ter a certeza de que o problema ocorreu durante uma recolha de lixo.

A localização do minidump pode normalmente ser encontrada num item de notificação de erros do Windows no registo de eventos após o estoiro entrada. Então, Diverte-te com o WinDbg !

A última documentação sobre a utilização do elemento de configuração <gcConcurrent/>, para desactivar a recolha de lixo de fundo concorrente ou (em.Net 4 e mais tarde), pode ser encontrada aqui.

 32
Author: thinkbeforecoding, 2017-08-04 17:51:20

Experimentei " erros internos "no tempo de execução.NET que acabaram por ser causados por erros no meu código; não pense que só porque foi um" erro interno " no tempo de execução. NET não existe um erro no seu código como causa raiz. Sempre culpes sempre o teu próprio código antes de culpares o de outra pessoa.

Espero que tenha dados de registo e de excepção/pilha para lhe indicar onde começar a procurar, ou que possa repetir o estado do sistema antes do falhar.

 7
Author: jason, 2010-12-06 15:06:21

Para aqueles que chegam aqui do google, acabei por me deparar com esta questão, e esta resposta específica resolveu o meu problema. Contactei a Microsoft para o hotfix através do chat ao vivo em support.microsoft.com e enviaram-me um link para o hotfix por e-mail.

 6
Author: Joao Milasch, 2017-05-23 12:10:42

Pode ser um erro com GC concorrente http://support.microsoft.com/kb/2679415

 4
Author: Filip Frącz, 2012-11-28 14:49:02

Depois de anos de luta com este problema em uma série de aplicações, parece que a Microsoft finalmente o aceitou como um bug no.net 4 CLR que faz com que isso ocorra. http://support.microsoft.com/kb/2640103.

Eu já tinha estado a "consertá-lo"forçando o coletor de lixo a correr no modo servidor (gcserver habilitado=" true " no aplicativo.config) conforme descrito no Artigo da Microsoft ligado ao Think Before Coding. Isto, em essência, força Todos os tópicos na aplicação para pausar durante a coleção removendo a possibilidade de outros threads acessarem a memória sendo manipulados pelo GC. Fico feliz em descobrir que meus anos de busca em vão por um " bug " no meu código ou outras bibliotecas não geridas de terceiros foram apenas infrutíferos porque o bug estava no código da Microsoft, não no meu.

 3
Author: park896, 2013-09-03 14:48:59

No meu caso, esta excepção ocorreu quando o espaço em disco acabou e o.NET não consegue alocar memória no Windows Virtual Memory.

Em caso de Registo vi este erro:

Popup de Aplicação: Windows-Memória Virtual mínima demasiado baixa: o seu sistema tem pouca memória virtual. O Windows está a aumentar o tamanho do seu ficheiro de chamada de memória virtual. Durante este processo, pedidos de memória para algumas aplicações podem ser negados.

E erro anterior:

O disco C está a ou perto capacidade. Você pode precisar apagar alguns arquivos.

 2
Author: Arthur Smirnov, 2012-08-07 11:02:45

Framework Version: v4. 0. 30319 Descrição: o processo foi encerrado devido a uma exceção não tratada. Informação Da Excepção: Sistema.Reflexao.Objectivoinvocationexception

Eu tenho enfrentado este erro, A aplicação estava trabalhando bem em alguns PCs e em alguns PCs dando o erro acima. Desinstalo o Framework 4.5 e re-instalo isto resolveu o meu problema.

Cheer.
 1
Author: user4815065, 2016-03-22 07:58:51
Não tenho a certeza se pode ajudar toda a gente, mas posso contornar isto correndo.
devenv.exe /ResetSettings 
...No caminho {Visual_Studio_root}\Common7\Ide

Eu tinha os seguintes erros no registo de eventos e o VS estava sempre a despenhar-se e a reiniciar:

Faulting application name: devenv.exe, version: 14.0.25123.0, time stamp: 0x56f22f32
Faulting module name: clr.dll, version: 4.7.2115.0, time stamp: 0x59af88f2
Exception code: 0xc0000005
Fault offset: 0x0015f90e
Faulting process id: 0x3a7c
Faulting application start time: 0x01d353463eaf0c36
Faulting application path: C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\devenv.exe
Faulting module path: C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll
Report Id: a232f984-6e80-4f61-9003-e18a035c8f93
Faulting package full name: 
Faulting package-relative application ID: 
 1
Author: Ritesh Varyani, 2017-11-01 22:20:13

No meu caso o problema foi o C++/CLI biblioteca em que existe uma chamada para o NtQuerySystemInformation; para algum tipo de razão, às vezes (e em circunstâncias misteriosas), quando ele foi chamado CLR pilha foi corrompido e o aplicativo travou.

Resolvi o problema usando um "heap personalizado" criado com HeapCreate e alocando lá os buffers usados por essa função.

 0
Author: SiMoStro, 2015-03-11 08:42:12

No meu caso, este erro ocorreu ao registar-se no ramo SAP uma aplicação 9.1. Nos eventos do Windows eu poderia encontrar também outro evento de erro além do relatado pelo OP:

Nome dell'applicazione che ha generato l'errore: SAP Business One.exe, versione: 9.10.160.0, timestamp: 0x551ad316
Nome del modulo che ha generato l'errore: clr.dll, versione: 4.0.30319.34014, timestamp: 0x52e0b784
Codice eccezione: 0xc0000005
Offset errore 0x00029f55
ID processo che ha generato l'errore: 0x1d7c
Ora di avvio dell'applicazione che ha generato l'errore: 0x01d0e6f4fa626e78
Percorso dell'applicazione che ha generato l'errore: C:\Program Files (x86)\SAP\SAP Business One\SAP Business One.exe
Percorso del modulo che ha generato l'errore: C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll
ID segnalazione: 3fd8e0e7-52e8-11e5-827f-74d435a9d02c
Nome completo pacchetto che ha generato l'errore: 
ID applicazione relativo al pacchetto che ha generato l'errore: 

A máquina executa o Windows 8.1, com o. NET Framework 4.0 instalado e sem a versão 4.5. Como parecia da internet que também poderia ser um bug in. net 4, eu tentei instalar o Framework. net 4.5.2 e resolvi o problema.

 0
Author: bluish, 2015-09-04 13:00:31
Isto pode ser uma excepção no finalizador. Se estiver a fazer o padrão de ~Class(){ Dispose(false); } verifique o que está a eliminar como um recurso não gerido. Experimenta..apanha lá e vais ficar bem. Encontrámos o problema, pois tivemos uma falha misteriosa sem registos. Nós fizemos o padrão recomendado usual de usar um " void Dispose (bool disposing)". Olhando para as respostas sobre esta pergunta sobre o finalizador, encontramos um possível lugar onde o A eliminação dos recursos não geridos poderia abrir uma excepção. Acontece que em algum lugar nós não descartamos o objeto corretamente, assim o finalizador assumiu a diposia de recursos não geridos, assim, uma exceção ocorreu.

Neste caso estava a usar a API Kafka Rest para limpar o cliente da Kafka. Parece que, a dada altura, abriu uma excepção.

 0
Author: Nelson J Perez, 2017-04-19 17:56:57
A cada 5 a 10 minutos, a minha lista de aplicações batia com este código de saída. Eu não quero arruinar a sua confiança do coletor de lixo, mas a seguinte solução funcionou para mim. Adicionei um trabalho que liga a cada minuto.

Suponho que, por alguma razão, o GC não está a inspeccionar automaticamente a memória com frequência suficiente para o elevado número de objectos descartáveis que uso.

 0
Author: Éric Bergeron, 2018-08-23 17:15:50