FIX: Access Violation in Client IDispatch Call Frame (322055)



The information in this article applies to:

  • Microsoft COM+ 1.0, when used with:
    • the operating system: Microsoft Windows 2000 SP1
    • the operating system: Microsoft Windows 2000 SP2

This article was previously published under Q322055

SYMPTOMS

After you run a stress test on Active Server Pages (ASP) script for hours in low isolation mode with PageHeap attached, the following call stack is generated:

ChildEBP RetAddr             
0a3de3b0 77fb4007 ntdll!RtlpDphIsNormalHeapBlock+0x86
0a3de3e0 77fb2cb1 ntdll!RtlpDphNormalHeapFree+0x39 
0a3de404 77fb5653 ntdll!RtlpDebugPageHeapFree+0xa6 
0a3de47c 77fa760a ntdll!RtlDebugFreeHeap+0x203 
0a3de51c 77fcba9e ntdll!RtlFreeHeapSlowly+0x4d 
0a3de5c0 77a51dca ntdll!RtlFreeHeap+0x53 
0a3de5d0 77a51df1 ole32!CRetailMalloc_Free+0x19 
0a3de5dc 0995ef72 ole32!CoTaskMemFree+0xf 
0a3de5fc 099614a5 TxfAux!OAUTIL__VariantClear+0x152 
0a3de6fc 77ad3a3e TxfAux!DISPATCH_CLIENT_FRAME__Free+0x255 
0a3de7a8 77ad3c29 ole32!CCtxChnl__SendReceive2+0x2f8 
0a3de8f4 09962a0f ole32!CCtxChnl__OnCall+0x1e8 
0a3de914 09962923 TxfAux!LEGACY_INTERCEPTOR__CallIndirect+0xdf 
0a3de930 6a9f6372 TxfAux!LEGACY_INTERCEPTOR__Invoke+0x23 
0a3de9e8 6aad9258 MSVBVM60!_vbaFreeObjList+0x362
					

CAUSE

In this call stack, the client-side IDispatch frame tries to free memory that it does not own. This problem can occur when a Component Object Model (COM) policy cancels a call because of the resource strain that the stress test causes. This causes COM to request that the client call frame free itself. When the client call frame tries to free memory, the call frame assumes that it owns the memory that is referenced by byref variants that are passed in from the IDispatch::Invoke method. However, because the client call frame does not own that memory, you receive an access violation.

RESOLUTION

To resolve this problem, obtain the latest service pack for Windows 2000. For additional information, click the following article number to view the article in the Microsoft Knowledge Base:

260910 How to Obtain the Latest Windows 2000 Service Pack


STATUS

Microsoft has confirmed that this is a problem in the Microsoft products that are listed at the beginning of this article. This problem was first corrected in Windows 2000 Service Pack 3.

Modification Type:MajorLast Reviewed:6/5/2003
Keywords:kbbug kbfix kbWin2000PreSP3Fix kbWin2000sp3fix KB322055