我正在使用 windows server 2008 server x64 和 IIS 7 处理来自 asp.net 页面逻辑的 COM 对象。通常,工作几个小时后,用户无法访问该站点,因为它被阻止直到 iisreset 没有完毕。
这是来自 DebugDiag 工具的崩溃/挂起报告:
在 w3wp.dmp 中的线程 41 拥有的 0x053901f8 处检测到可能的阻塞或泄漏临界区 此锁的影响 47.13% 的线程被阻塞(大约 20 个线程)
以下函数试图进入这个关键部分
ntdll!RtlpAllocateHeap+18c6
ntdll!RtlpFreeHeap+1334
这是管理 com 的时间互操作对象。堆栈跟踪如下:
ntdll!NtWaitForSingleObject+a
ntdll!RtlpWaitOnCriticalSection+ea
ntdll!RtlEnterCriticalSection+f4
ntdll!RtlpAllocateHeap+18c6
ntdll!RtlAllocateHeap+151
msvcr100!malloc+5b
或者
ntdll!NtWaitForSingleObject+a
ntdll!RtlpWaitOnCriticalSection+ea
ntdll!RtlEnterCriticalSection+f4
ntdll!RtlpFreeHeap+1334
ntdll!RtlFreeHeap+1a2
kernel32!HeapFree+a
msvcr100!free+1c
我猜,管理内存中有损坏。站点在 VMware Server 下的虚拟机上工作。
有没有人在这方面有类似的经验?
非常感谢!