marshalCleanupError MDA

Note

この記事は .NET Framework に固有のものです。 .NET 6 以降のバージョンを含む、.NET の新しい実装には適用されません。

共通言語ランタイム (CLR) が、ネイティブとマネージドのコードの境界間でのデータ型のマーシャリングに使用した一時的な構造体とメモリをクリーンアップしようとしたときにエラーが発生すると、marshalCleanupError マネージド デバッグ アシスタント (MDA) がアクティブ化されます。

現象

ネイティブ コードとマネージド コードの遷移を実行する場合、スレッド カルチャなどのランタイム状態が復元されない場合、またはSafeHandle をクリーンアップしようしてエラーが発生した場合に、メモリ リークが発生します。

原因

一時的な構造体のクリーンアップ中に予期しないエラーが発生しました。

解決方法

すべての SafeHandle デストラクター、ファイナライザー、カスタム マーシャラーの実装を調べ、エラーがないかどうかをレビューします。

ランタイムへの影響

この MDA は CLR に影響しません。

出力

クリーンアップ中に失敗した操作を報告するメッセージ。

構成

<mdaConfig>
  <assistants>
    <marshalCleanupError />
  </assistants>
</mdaConfig>

関連項目