hi.
i have application written in vb.net + managed c++ dll that call also to
unmanaged c++ function.
the application crash.
i open the dump file of the crash with WinDbg and that's is the call stack
(using the sos.dll) :
=====================================
(2f0.98c): Access violation - code c0000005 (!!! second chance !!!)
eax=00800000 ebx=77e760cb ecx=00a3e01c edx=00000008 esi=8000001c
edi=000000c8
eip=792cfcbb esp=0df6f91c ebp=0df6f928 iopl=0 nv up ei pl nz na po
nc
cs=001b ss=0023 ds=0023 es=0023 fs=0038 gs=0000
efl=00000206
mscorwks!gc_heap::c_promote_callback+0xfe:
792cfcbb 8b3c81 mov edi,[ecx+eax*4]
ds:0023:02a3e01c=????????
0:045> load sos.dll
^ Syntax error in 'load sos.dll'
0:045> .load sos.dll
0:045> !dumpstack
succeeded
Loaded Son of Strike data table version 5 from
"C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\msco rwks.dll"
Current frame: mscorwks!gc_heap::c_promote_callback+0xfe
ChildEBP RetAddr Caller,Callee
0df6f928 79212116 mscorwks!GcEnumObject+0x20
0df6f93c 791fe018 mscorwks!EECodeManager::EnumGcRefs+0x503
0df6f97c 77f944a8 ntdll!RtlpAllocateFromHeapLookaside+0x42, calling
ntdll!_SEH_epilog
0df6fa08 79211f4f mscorwks!GcStackCrawlCallBack+0xc5
0df6fa48 791d68d8 mscorwks!Thread::StackWalkFramesEx+0x136
0df6fab4 77f95769 ntdll!RtlLogStackBackTrace+0x11f, calling
ntdll!_SEH_epilog
0df6fb1c 1a40160b URLMON!CUrlMkTls::CUrlMkTls+0x25, calling
URLMON!CUrlMkTls::TLSAllocData
0df6fb24 1a4102a0 URLMON!TlsDllMain+0x59, calling
URLMON!CUrlMkTls::CUrlMkTls
0df6fb34 1a4100d5 URLMON!DllMain+0x184, calling URLMON!TlsDllMain
0df6fb64 102094d4 msvcr71d!_nh_malloc_dbg+0x64, calling msvcr71d!_unlock
0df6fbc0 791d6a13 mscorwks!Thread::StackWalkFrames+0x8b, calling
mscorwks!Thread::StackWalkFramesEx
0df6fc30 77f62b67 ntdll!LdrpInitializeThread+0xe3, calling
ntdll!RtlDeactivateActivationContextUnsafeFast
0df6fc38 77f62bc6 ntdll!LdrpInitializeThread+0x142, calling
ntdll!_SEH_epilog
0df6fc9c 77f55432 ntdll!LdrpInitialize+0x26f, calling
ntdll!RtlLeaveCriticalSection
0df6fca0 77f5c474 ntdll!ZwTestAlert+0xc
0df6fca4 77f5541d ntdll!LdrpInitialize+0x25a, calling ntdll!_SEH_epilog
0df6fd18 77f5541d ntdll!LdrpInitialize+0x25a, calling ntdll!_SEH_epilog
0df6fd1c 77f5b644 ntdll!ZwContinue+0xc
0df6fd20 77f75d8f ntdll!KiUserApcDispatcher+0xf, calling ntdll!ZwContinue
0df6fdd4 77f944a8 ntdll!RtlpAllocateFromHeapLookaside+0x42, calling
ntdll!_SEH_epilog
0df6fdd8 77f57d70 ntdll!RtlAllocateHeap+0x1c2, calling
ntdll!RtlpAllocateFromHeapLookaside
0df6fee4 79212c06 mscorwks!CNameSpace::GcScanRoots+0x7b, calling
mscorwks!Thread::StackWalkFrames
0df6ff10 792d0d9a mscorwks!gc_heap::c_mark_phase+0x8e, calling
mscorwks!CNameSpace::GcScanRoots
0df6ff4c 7925bf7b mscorwks!gc_heap::gc1+0x8c, calling
mscorwks!gc_heap::c_mark_phase
0df6ff88 77e7ab74 kernel32!WaitForSingleObject+0xf, calling
kernel32!WaitForSingleObjectEx
0df6ffa0 792d1063 mscorwks!gc_heap::gc_thread_function+0xa6, calling
mscorwks!gc_heap::gc1
0df6ffb0 792d1097 mscorwks!gc_heap::gc_thread_stub+0x5, calling
mscorwks!gc_heap::gc_thread_function
0df6ffb4 77e7d28e kernel32!BaseThreadStart+0x37
=======================================
now
ill check all memory allocation and also wrote :
_ASSERTE(_CrtCheckMemory());
after every memory allocation i do.
the application crash,and i get this dump stack.
now the thing is ,its a telephony server.
and the crash can happen even if there is no caller call the server.
now ,the hard thing here is if you look in the call stack
all the dlls are'nt telephony dll, or my dlls.
so no idea which dll cause this mess.
any tips ?
im trying to find this bug for 2 weeks.
look on my code and wrote alot of _ASSERTE(_CrtCheckMemory());
but without any help to know the reason of the crash.