“Internal Error In The .NET Runtime”的应用程序崩溃如何解决?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (496)

我们有一个针对.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标准版盒子上。谷歌搜索这个错误没有发现任何相关。例如,这不是在VS Studio中发生的,而是在生产箱中发生的; 当服务最终重新启动时,它没有遇到更多问题。

如何诊断.NET运行时错误?

提问于
用户回答回答于

垃圾收集在x64 .Net 4上的并发实现中的错误可能会导致此问题,如以下Microsoft知识库条目中所述:

垃圾回收期间发生ExecutionEngineException

应该首先进行深入的小型转储探索,以确保垃圾收集期间发生问题。

通常可以在崩溃条目之后的事件日志中的Windows错误报告条目中找到小型转储位置。然后,与WinDbg玩得开心!

<gcConcurrent/>可以在这里找到关于使用配置元素的最新文档,以禁用并发或(在.NET 4及更高版本中)后台垃圾回收。

用户回答回答于

退出代码80131506

这是一个令人讨厌的问题,ExecutionEngineException。从.NET 4.0开始,此异常立即终止程序。通用原因是垃圾收集堆状态的腐败。而这又总是由非托管代码引起的。代码中发生此异常的确切位置无助,通常在检测到损坏之前发生损坏。

找到确切的原因将是困难的。查看您的服务可能使用的任何非托管代码。如果没有明显的候选人,可能会怀疑环境问题,恶意软件扫描程序恶作剧是臭名昭着的。如果重复性很差,那么怀疑软RAM问题等硬件问题。

扫码关注云+社区

领取腾讯云代金券