W
Wing
I am using running my app at win2003 sp1 dotnet 1.1. My aspx app always
crash inside gc_heap::mark_object_simple. The crash stacks are similar
each time.
I was wondering is it because my COM object is gone, while the dotnet
RCW thought it's still here. But then GC shouldn't need to access my
COM object and try dereference it. Please tell me what is going on in
the GC when it crashes.
Thanks
Wing
....................................................................................................................................................................................................................
(4b8.1a00): Access violation - code c0000005 (!!! second chance !!!)
eax=c0000000 ebx=1a372f0c ecx=1a3c755c edx=00000001 esi=000d40c8
edi=0000004a
eip=79200397 esp=021af8c8 ebp=021af8f4 iopl=0 nv up ei ng nz na
po nc
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000
efl=00010286
mscorsvr!gc_heap::mark_object_simple+0x4d:
79200397 668b10 mov dx,[eax]
ds:0023:c0000000=????
This is the thread that crash:
Loaded Son of Strike data table version 5 from
"C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\mscorsvr.dll"
Current frame: mscorsvr!gc_heap::mark_object_simple+0x4d
ChildEBP RetAddr Caller,Callee
021af8f4 79210bd6
mscorsvr!gc_heap::mark_through_cards_for_segments+0x301
021af984 7920111c mscorsvr!gc_heap::mark_phase+0x18e, calling
mscorsvr!gc_heap::mark_through_cards_for_segments
021af9a0 7c821944 ntdll!ZwQueryEvent+0xc
021af9a4 77e76ba1 kernel32!QueryMemoryResourceNotification+0x2e,
calling ntdll!NtQueryEvent
021af9cc 791ff435 mscorsvr!gc_heap::gc1+0x70, calling
mscorsvr!gc_heap::mark_phase
021af9ec 791fe850 mscorsvr!ThreadStore::GetAllThreadList+0x28, calling
mscorsvr!SList<Thread,128,0>::GetNext
021afa0c 77e670c2 kernel32!SetEvent+0x10, calling ntdll!NtSetEvent
021afa24 791ff065 mscorsvr!gc_heap::garbage_collect+0x22f, calling
mscorsvr!gc_heap::gc1
021afa70 77e6ba12 kernel32!WaitForSingleObject+0x12, calling
kernel32!WaitForSingleObjectEx
021afa88 791fe6c3 mscorsvr!gc_heap::gc_thread_function+0x42, calling
mscorsvr!gc_heap::garbage_collect
021afaac 792356bf mscorsvr!Thread::SetExposedContext+0x28, calling
mscorsvr!gc_heap::gc_thread_function
021afb68 7c82fb23 ntdll!RtlAllocateHeap+0xee7, calling
ntdll!_SEH_epilog
021afb6c 791722d0 mscoree!calloc+0x88, calling ntdll!RtlAllocateHeap
021afb70 77e660d6 kernel32!FlsSetValue+0xc7, calling
kernel32!_SEH_epilog
021afba8 77e660d6 kernel32!FlsSetValue+0xc7, calling
kernel32!_SEH_epilog
021afbac 79172262 mscoree!_CRT_INIT+0x146, calling kernel32!FlsSetValue
021afbb0 79172270 mscoree!_CRT_INIT+0x150, calling mscoree!_initptd
021afbb4 79172277 mscoree!_CRT_INIT+0x157, calling
kernel32!GetCurrentThreadId
021afbdc 7c950658 shell32!_DllMainCRTStartup+0x52, calling
shell32!DllMain
021afbfc 7c82257a ntdll!LdrpCallInitRoutine+0x14
021afc24 7c81a81b ntdll!LdrpInitializeThread+0x1a5, calling
ntdll!RtlLeaveCriticalSection
021afc2c 7c81b26f ntdll!LdrpInitializeThread+0x18f, calling
ntdll!_SEH_epilog
021afc7c 7c81a7dc ntdll!LdrpInitializeThread+0xd8, calling
ntdll!RtlActivateActivationContextUnsafeFast
021afc80 7c81a7a4 ntdll!LdrpInitializeThread+0x12c, calling
ntdll!RtlDeactivateActivationContextUnsafeFast
021afcb4 7c81b26f ntdll!LdrpInitializeThread+0x18f, calling
ntdll!_SEH_epilog
021afcb8 7c822054 ntdll!ZwTestAlert+0xc
021afcbc 7c81b23f ntdll!_LdrpInitialize+0x1de, calling
ntdll!_SEH_epilog
021afd10 7c81b23f ntdll!_LdrpInitialize+0x1de, calling
ntdll!_SEH_epilog
021afd14 7c8211b4 ntdll!ZwContinue+0xc
021afd18 7c82ec42 ntdll!KiUserApcDispatcher+0x3a, calling
ntdll!NtContinue
021affac 792356b8 mscorsvr!gc_heap::gc_thread_stub+0x18, calling
mscorsvr!_chkstk
021affb8 77e66063 kernel32!BaseThreadStart+0x34
0:023> !clrstack
crash inside gc_heap::mark_object_simple. The crash stacks are similar
each time.
I was wondering is it because my COM object is gone, while the dotnet
RCW thought it's still here. But then GC shouldn't need to access my
COM object and try dereference it. Please tell me what is going on in
the GC when it crashes.
Thanks
Wing
....................................................................................................................................................................................................................
(4b8.1a00): Access violation - code c0000005 (!!! second chance !!!)
eax=c0000000 ebx=1a372f0c ecx=1a3c755c edx=00000001 esi=000d40c8
edi=0000004a
eip=79200397 esp=021af8c8 ebp=021af8f4 iopl=0 nv up ei ng nz na
po nc
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000
efl=00010286
mscorsvr!gc_heap::mark_object_simple+0x4d:
79200397 668b10 mov dx,[eax]
ds:0023:c0000000=????
This is the thread that crash:
Loaded Son of Strike data table version 5 from
"C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\mscorsvr.dll"
Current frame: mscorsvr!gc_heap::mark_object_simple+0x4d
ChildEBP RetAddr Caller,Callee
021af8f4 79210bd6
mscorsvr!gc_heap::mark_through_cards_for_segments+0x301
021af984 7920111c mscorsvr!gc_heap::mark_phase+0x18e, calling
mscorsvr!gc_heap::mark_through_cards_for_segments
021af9a0 7c821944 ntdll!ZwQueryEvent+0xc
021af9a4 77e76ba1 kernel32!QueryMemoryResourceNotification+0x2e,
calling ntdll!NtQueryEvent
021af9cc 791ff435 mscorsvr!gc_heap::gc1+0x70, calling
mscorsvr!gc_heap::mark_phase
021af9ec 791fe850 mscorsvr!ThreadStore::GetAllThreadList+0x28, calling
mscorsvr!SList<Thread,128,0>::GetNext
021afa0c 77e670c2 kernel32!SetEvent+0x10, calling ntdll!NtSetEvent
021afa24 791ff065 mscorsvr!gc_heap::garbage_collect+0x22f, calling
mscorsvr!gc_heap::gc1
021afa70 77e6ba12 kernel32!WaitForSingleObject+0x12, calling
kernel32!WaitForSingleObjectEx
021afa88 791fe6c3 mscorsvr!gc_heap::gc_thread_function+0x42, calling
mscorsvr!gc_heap::garbage_collect
021afaac 792356bf mscorsvr!Thread::SetExposedContext+0x28, calling
mscorsvr!gc_heap::gc_thread_function
021afb68 7c82fb23 ntdll!RtlAllocateHeap+0xee7, calling
ntdll!_SEH_epilog
021afb6c 791722d0 mscoree!calloc+0x88, calling ntdll!RtlAllocateHeap
021afb70 77e660d6 kernel32!FlsSetValue+0xc7, calling
kernel32!_SEH_epilog
021afba8 77e660d6 kernel32!FlsSetValue+0xc7, calling
kernel32!_SEH_epilog
021afbac 79172262 mscoree!_CRT_INIT+0x146, calling kernel32!FlsSetValue
021afbb0 79172270 mscoree!_CRT_INIT+0x150, calling mscoree!_initptd
021afbb4 79172277 mscoree!_CRT_INIT+0x157, calling
kernel32!GetCurrentThreadId
021afbdc 7c950658 shell32!_DllMainCRTStartup+0x52, calling
shell32!DllMain
021afbfc 7c82257a ntdll!LdrpCallInitRoutine+0x14
021afc24 7c81a81b ntdll!LdrpInitializeThread+0x1a5, calling
ntdll!RtlLeaveCriticalSection
021afc2c 7c81b26f ntdll!LdrpInitializeThread+0x18f, calling
ntdll!_SEH_epilog
021afc7c 7c81a7dc ntdll!LdrpInitializeThread+0xd8, calling
ntdll!RtlActivateActivationContextUnsafeFast
021afc80 7c81a7a4 ntdll!LdrpInitializeThread+0x12c, calling
ntdll!RtlDeactivateActivationContextUnsafeFast
021afcb4 7c81b26f ntdll!LdrpInitializeThread+0x18f, calling
ntdll!_SEH_epilog
021afcb8 7c822054 ntdll!ZwTestAlert+0xc
021afcbc 7c81b23f ntdll!_LdrpInitialize+0x1de, calling
ntdll!_SEH_epilog
021afd10 7c81b23f ntdll!_LdrpInitialize+0x1de, calling
ntdll!_SEH_epilog
021afd14 7c8211b4 ntdll!ZwContinue+0xc
021afd18 7c82ec42 ntdll!KiUserApcDispatcher+0x3a, calling
ntdll!NtContinue
021affac 792356b8 mscorsvr!gc_heap::gc_thread_stub+0x18, calling
mscorsvr!_chkstk
021affb8 77e66063 kernel32!BaseThreadStart+0x34
0:023> !clrstack