.NET“致命执行引擎错误”故障排除

2023-12-28

Summary:

我定期在我似乎无法调试的应用程序上收到 .NET 致命执行引擎错误。出现的对话框仅提供关闭程序或向 Microsoft 发送有关错误的信息。我尝试查看更详细的信息,但我不知道如何利用它。

Error:

该错误在应用程序下的事件查看器中可见,如下所示:

.NET 运行时版本 2.0.50727.3607 - 致命执行引擎错误 (7A09795E) (80131506)

运行它的计算机是 Windows XP Professional SP 3。(Intel Core2Quad Q6600 2.4GHz w/ 2.0 GB RAM)其他缺乏多线程下载的基于 .NET 的项目(见下文)似乎运行得很好。

应用:

该应用程序是使用 VS2008 用 C#/.NET 3.5 编写的,并通过安装项目安装。

该应用程序是多线程的,使用以下方式从多个网络服务器下载数据System.Net.HttpWebRequest及其方法。我已经确定 .NET 错误与线程或 HttpWebRequest 有关,但我无法更接近,因为这个特定错误似乎无法调试。

我尝试过处理多个级别的错误,包括 Program.cs 中的以下错误:

// handle UI thread exceptions
Application.ThreadException += Application_ThreadException;

// handle non-UI thread exceptions
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;

Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);

// force all windows forms errors to go through our handler
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);

更多注释和我尝试过的...

  • 在目标机器上安装了Visual Studio 2008并尝试在调试模式下运行,但错误仍然发生,并且没有提示源代码中的位置。
  • 从已安装版本(发布版)运行程序时,错误发生的频率会更高,通常在启动应用程序后的几分钟内。当在 VS2008 中以调试模式运行程序时,它可能会运行数小时或数天,然后才会生成错误。
  • 重新安装 .NET 3.5 并确保应用所有更新。
  • 沮丧地打破了随机的隔间物品。
  • 重写了处理线程和下载的代码部分,以尝试捕获和记录异常,尽管日志记录似乎加剧了问题(并且从未提供任何数据)。

问题:

我可以采取哪些步骤来排除或调试此类错误?内存转储等似乎是下一步,但我没有解释它们的经验。也许我可以在代码中做更多的事情来尝试捕获错误...如果“致命执行引擎错误”能提供更多信息,那就太好了,但互联网搜索只告诉我这是很多人的常见错误.NET 相关项目。


好吧,你有一个大问题。当 CLR 检测到垃圾收集堆完整性受到损害时,会引发该异常。堆损坏是任何用 C 或 C++ 等非托管语言编写代码的程序员的祸根。

这些语言做到了very很容易损坏堆,​​所需要做的就是写入分配在堆上的数组的末尾。或者在内存被释放后使用它。或者指针的值不好。管理代码的发明就是为了解决这种 bug。

但从你的问题来看,你正在使用托管代码。嗯,大多数情况下,your代码是受管理的。但你正在执行lots非托管代码。所有实际使 HttpWebRequest 工作的低级代码都是非托管的。 CLR 也是如此,它是用 C++ 编写的,因此从技术上讲也有可能损坏堆。但在对它进行了四千多次修订以及数百万个程序使用它之后,它仍然遭受堆虱子困扰的可能性是very small.

对于所有其他需要 HttpWebRequest 的非托管代码来说,情况并非如此。您不了解这些代码,因为它不是您编写的,也没有被 Microsoft 记录。你的防火墙。您的病毒扫描程序。贵公司的互联网使用监控器。天知道谁的“下载加速器”。

隔离问题,假设导致问题的既不是您的代码,也不是 Microsoft 的代码。假设它是环保第一并摆脱垃圾软件。

欲了解史诗般的环保费用故事,请阅读这个线程 http://social.msdn.microsoft.com/Forums/en/clr/thread/40e8e7e7-d051-49b7-ba2c-509b210a9736.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

.NET“致命执行引擎错误”故障排除 的相关文章

随机推荐