首页 > 解决方案 > .net 核心是否仍应抛出 System.ExecutionEngineException?

问题描述

我有一个 .netcore 3.1(带有一些 .netstandard 2.0 库,没有外部引用,只有托管代码)项目,我目前正在调查托管堆损坏的问题。有时,它会System.ExecutionEngineException在代码的不同区域(例如,在创建新列表时)抛出 HResult=0x80131506 。

更新:我已删除 .net dll 并将其重写为 .net 标准项目,但问题仍然存在。

我无法创建一个简单的项目来演示该问题,但是当我在msdn上查找异常时,我得到了:

“这种类型以前在运行时表示未指定的致命错误。运行时不再引发此异常,因此这种类型已过时。”

它进一步列出了这种类型对于所有 .net 核心都已过时。我从来没有深入研究过 .net 来尝试调查堆损坏,所以我不能 100% 确定如何表达我正在寻找的内容,但我想它归结为:

  1. 我的项目抛出此异常的事实是否让我更深入地了解堆损坏的原因?(我可以追踪这是从哪里来的)
  2. 如果出现问题,.net 是否仍然有可能抛出这个异常,因为它不应该被抛出?
  3. 如果它不仅仅是“你在某处有内存损坏”的人工制品,是否有一种工具/技术可以以某种方式缩小范围?

标签: c#memoryclr

解决方案


推荐阅读