私はこの問題についてもっと調べようとしていますが、あまり運がありません。アプリケーションでこのエラーが発生するべきではないことを読み続けていますが、それはすべて問題ありませんが、このエラーが表示される原因はわかりません。
このエラーには複数の原因が考えられると確信しているため、この質問は非常に幅広いことを知っているので、少し絞り込んでみます。
私はVS2003でC++.NETを使用するアプリケーションを開発しています
アプリケーションは、大部分がアンマネージ コードを使用し、マネージ コードはほとんど使用しません (ガベージ コレクターによる干渉が大きいため)。したがって、95% が管理されておらず、5% が管理されていると評価します。
不安定/バグのある/不適切なアンマネージ コードが CLR メモリの一部を台無しにし、破損してこのエラーをスローする可能性があることをどこかで読みました。
アプリケーションの 95% は管理されていないため、どこから調べればよいかわかりません。マネージとアンマネージの間で相互作用するいくつかのクラスでしょうか? マネージドからアンマネージドへのデータのマーシャリングについてはどうでしょうか? 無効なヌル ポインターが原因でこのエラーが発生する可能性はありますか? これを引き起こす可能性のある他の問題は何ですか?配列インデックスが範囲外ですか? Null オブジェクトはどうですか?
System.ExecutionEngine の失敗の考えられる原因の優れたリストを提供できる情報/紙/記事をいただければ幸いです。
回答に基づいて、この例外は複数のシナリオで発生する可能性があり、可視性を高めるために質問でここに言及します。
考えられる原因/シナリオのリスト:
- C++ と C# の間の引数の不一致
- リフレクション使用時
- WCF サービスは、ここ でIList または IEnumerable を返そうとします。
- プロファイリング ツールの使用
- アセンブラで std 命令を使用する
- ::FreeLibrary() を複数回呼び出す
- .NET クリップボード呼び出し
- Unity フレームワークの使用
- 間違ったマーシャリングの使用
- 使用する
INotifyPropertyChanged
考えられる回避策/解決策: