3

运行Microsoft Application Verifier0202时,我会在关机时收到错误消息:

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 显示的信息

  • Parameter1 - 临界区地址
  • Parameter2 - 关键部分初始化堆栈跟踪
  • Parameter3 - 堆块地址
  • Parameter4 - 堆块大小
  • 描述 - 释放包含活动临界区的堆块

附加信息

验证程序停止代码 0202。

检查当前调用堆栈的内容。罪魁祸首通常是当前堆栈跟踪上 HeapFree 或 HeapDestroy 的调用者。

此错误的频率很高。

要调试此停止,请使用以下调试器命令:

  • !cs –s parameter1- 转储有关此关键部分的信息。
  • ln parameter1– 在临界区地址附近显示符号。这应该有助于识别泄漏的关键部分。
  • dds parameter2– 转储此临界区初始化的堆栈跟踪。

parameter3parameter4可能有助于了解该堆块在哪里分配(分配的大小可能很重要)。

4

1 回答 1

0

几个月前我遇到了这个错误,我忘记了解决方案。

确保GdipDisposeImage在尝试关闭 GDI+ 之前释放所有 GDI+ 图像(例如 )。

否则你会泄露一个关键部分,谁知道还有什么。当然不要在GDI+ 已经关闭尝试处理图像

于 2012-06-21T19:50:27.927 回答