运行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时会发生错误。

从应用程序验证程序文档中:


释放包含活动临界区的堆块

应用程序验证程序中断消息

释放包含活动临界区的堆块。大小为的内存位置包含一个活动锁。

可能的原因

如果堆分配包含关键部分,释放了分配并且尚未删除关键部分,则会生成此中断。

应用程序验证程序显示的信息


参数1-关键段地址
参数2-关键部分初始化堆栈跟踪
参数3-堆块地址
参数4-堆块大小
描述-释放包含活动临界区的堆块


附加信息

验证程序停止码0202。

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

此错误的频率很高。

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


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


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

最佳答案

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

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

否则,您会泄漏关键部分,谁知道呢。当然也不要尝试dispose an image after GDI+ has already been shutdown

关于gdi+ - App Verifier停止0202:在GdiPlusShutdown期间释放包含事件临界区的堆块,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11145714/

10-11 18:27