应用程序崩溃并显示“ .NET Runtime 内部错误”

127
我们有一个应用程序是针对.NET 4.0编写的,在周末发生了崩溃,导致以下信息记录在事件日志中:
Application: PnrRetrieverService.exe Framework Version: v4.0.30319 Description: The process was terminated due to an internal error in the .NET Runtime at IP 791F9AAA (79140000) with exit code 80131506.
这是在安装Windows Server 2003 R2 Standard Edition的服务器上发生的。尝试谷歌搜索此错误并没有找到任何相关的内容。例如,这不是在VS Studio中发生的,而是在生产服务器上发生的。当服务最终重新启动后,就再也没有出现过问题。
如何诊断.NET Runtime中的故障?

1
如果这是第一次出现此错误,则我会调查最近几天到一周内发生的任何变化。 - Tony Abrams
18个回答

1
这可能是在终结器中发生的异常。如果您正在执行“Pattern of ~Class(){Dispose(false);}”检查,那么请检查您正在处置的非托管资源。只需在此处添加try..catch即可解决问题。我们发现了这个问题,因为我们遇到了一个没有日志记录的神秘故障。我们采用了通常推荐的“void Dispose(bool disposing)”模式。通过查看有关终结器的答案,我们发现了未处理非托管资源的可能位置。结果发现,在某些地方,我们没有正确处置对象,因此终结器接管了非托管资源的处置,从而导致异常出现。在这种情况下,我们使用Kafka Rest API来清除Kafka客户端。似乎在某个时候它确实引发了异常,然后就出现了这个问题。

1

1
在我的情况下,问题出在一个C++/CLI库中,在其中调用了NtQuerySystemInformation;由于某种原因,有时(在神秘的情况下),当它被调用时,CLR堆会受到破坏,应用程序崩溃。
我使用HeapCreate创建了一个“自定义堆”,并在那里分配了该函数使用的缓冲区,解决了这个问题。

1
每5-10分钟,我的应用程序池就会崩溃并显示此退出代码。我不想破坏您对垃圾回收器的信任,但以下解决方案适用于我。
我添加了一个作业,每分钟调用GC.GetTotalMemory(true)
我认为,由于我使用了大量的可处理对象,垃圾回收器没有自动足够频繁地检查内存。

0

我从未弄清楚为什么会发生这种情况。对于我的一个应用程序,它一直是可重现的,但只需重新启动即可消失。

我正在运行 Windows 2004 Build 19582.1001(Insider Preview),使用 .net-4.8,如果这是由于类似硬件内存错误之类的原因引起的,我也不会感到惊讶。此外,我的应用程序确实加载了一些非托管代码并进行了初始化,因此我无法证明崩溃不是来自那里。


0

框架版本:v4.0.30319 描述:由于未处理的异常,进程已终止。 异常信息:System.Reflection.TargetInvocationException

我遇到了这个错误,在一些电脑上应用程序运行良好,而在另一些电脑上则出现上述错误。我卸载了框架4.5并重新安装,问题得到解决。

加油!


0

我在安装SQL Server 2017时,在Windows 2016上遇到了同样的问题。错误信息为:

"ScenarionEngine.exe崩溃,显示“ .NET Runtime内部错误”

首先,请检查Microsoft .NET Framework版本是否为4.5,如果是,则升级到最新版本。目前最新版本为Microsoft .NET Framework 4.8。如果这对您没有用,请尝试下一步。

下一步:请卸载KB4486129,然后下载Microsoft .NET Framework 4.8。同样的错误已经被解决了。


0
在我的情况下,当登录SAP Business One 9.1应用程序时出现了此错误。在Windows事件中,除了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: 

该机器运行Windows 8.1操作系统,已安装.NET Framework 4.0版本,但未安装4.5版本。由于在互联网上看到可能是.NET 4中的一个错误,因此我尝试安装.NET Framework 4.5.2并解决了这个问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接