gpt4 book ai didi

.net - .NET 故障排除 "Fatal Execution Engine Error"

转载 作者:行者123 更新时间:2023-12-03 07:04:29 28 4
gpt4 key购买 nike

摘要:

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

错误:

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

.NET Runtime version 2.0.50727.3607 - Fatal Execution Engine Error (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 及其方法从多个 Web 服务器下载数据。我已经确定 .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 并尝试在 Debug模式下运行,但错误仍然出现,并且没有提示源代码中的位置。
  • 从安装版本(发布版)运行程序时,错误发生的频率会更高,通常在启动应用程序后的几分钟内。在 VS2008 中以 Debug模式运行程序时,它可能会运行数小时或数天,然后才会生成错误。
  • 重新安装 .NET 3.5 并确保应用所有更新。
  • 沮丧地随机打碎隔间里的元素。
  • 重写了处理线程和下载的代码部分,以 try catch 和记录异常,尽管日志记录似乎加剧了问题(并且从未提供任何数据)。

问题:

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

最佳答案

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

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

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

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

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

有关史诗般的环境费用故事,请阅读 this thread .

关于.net - .NET 故障排除 "Fatal Execution Engine Error",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2823440/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com