导致System.ExecutionEngineeException异常可能的原因

我一直想知道更多关于这个问题的信息,但运气不太好。我一直在读,应用程序不应该出现这个错误,它不告诉我什么可以导致这个错误出现。我知道这个问题非常宽泛,因为我确信这个错误可能有多种原因,所以我会尽量缩小范围。我在VS2015中开发了一个使用C++ .NET的应用程序。应用程序主要使用非托管代码,很少使用托管代码(由于垃圾收集器的严重干扰)。所以我认为95%是非托管的,5%是托管的。我在某个地方读到过,不稳定/错误/不正确的非托管代码可能会扰乱CLR内存的某些部分,使其损坏并引发此错误。由于95%的应用程序是非托管的,我不知道从哪里开始查找。可能是少数几个在托管和非托管之间交互的类?如何将数据从托管封送到非托管?错误的空指针会导致此失败吗?还有什么问题会导致这种情况?数组索引越界?空对象呢?
如果您能提供有关System.ExecutionEngine故障可能原因的详细列表,我们将不胜感激!可能原因/情况列表如下:

  • C++与C语言的参数失配
  • 使用反射时
  • WCF服务试图在此处返回IList或IEnumerable
  • 使用分析工具
  • 在汇编程序中使用std指令
  • 多次调用::FreeLibrary()
  • .NET剪贴板调用
  • 使用统一框架
  • 使用错误的封送处理
  • 使用INotifyPropertyChanged

posted on 2020-03-03 14:31  活着的虫子  阅读(1377)  评论(0编辑  收藏  举报

导航