3

Microsoft Application Verifierを実行すると0202、シャットダウン時にエラーが発生します。

VERIFIER STOP 00000202:
   pid 0x1160: Freeing heap block containing an active critical section. 
   11456F48 : Critical section address.
   047D05B4 : Critical section initialization stack trace.
   11456F40 : Heap block...(cut off)

の呼び出し中にエラーが発生しGdiplusShutdownます。

Application Verifierのドキュメントから:

アクティブなクリティカルセクションを含むヒープブロックを解放する

アプリケーションベリファイアブレークメッセージ

アクティブなクリティカルセクションを含むヒープブロックを解放します。サイズのメモリ位置にアクティブなロックが含まれています。

推定原因

このブレークは、ヒープ割り当てにクリティカルセクションが含まれ、割り当てが解放され、クリティカルセクションが削除されていない場合に生成されます。

ApplicationVerifierによって表示される情報

  • パラメータ1-クリティカルセクションアドレス
  • パラメータ2-クリティカルセクション初期化スタックトレース
  • パラメータ3-ヒープブロックアドレス
  • パラメータ4-ヒープブロックサイズ
  • 説明-アクティブなクリティカルセクションを含むヒープブロックを解放します

追加情報

ベリファイア停止コード0202。

現在のコールスタックの内容を確認してください。犯人は通常、現在のスタックトレースでHeapFreeまたはHeapDestroyの呼び出し元です。

このエラーの頻度は高いです。

この停止をデバッグするには、次のデバッガコマンドを使用します。

  • !cs –s parameter1-このクリティカルセクションに関する情報をダンプします。
  • ln parameter1–クリティカルセクションのアドレスの近くに記号を表示します。これは、リークされたクリティカルセクションを特定するのに役立ちます。
  • dds parameter2–このクリティカルセクションの初期化のスタックトレースをダンプします。

parameter3parameter4は、このヒープブロックがどこに割り当てられたかを理解するのに役立つ場合があります(割り当てのサイズはおそらく重要です)。

4

1 に答える 1

0

私は数ヶ月前にこのエラーが発生し、解決策を忘れていました。

GdipDisposeImageGDI +をシャットダウンする前に、必ずGDI +イメージ(例)を解放してください。

そうでなければ、あなたはクリティカルセクションをリークし、誰が他に何を知っているのか。そして確かに、 GDI+がすでにシャットダウンされた後にイメージを破棄しようとしないでください。

于 2012-06-21T19:50:27.927 に答える