Folks,
I am trying to track why my application stops responding to events.
Some Background: The App in question My_C_Application is a (C application with both C and C++ code) it also referenced a .Net dll which exposes functionality as COM objects, these are register using regasm and the associated tlh is used to resolve these classes to load and use. The app also uses a third party Messaging library IPWorks, we use the SSL version for c++ here and this talks to other systems which are .net based over IP. These other systems use the .Net version of IpWorks, My_C_Application acts as the business logic engine and the other apps handle Data, GUI etc.
This all seems to work fine in testing & in many client sites, in some client sites we are getting reports where the GUI is not responding to an clicks (now we have seen this occur on site, the GUI is hanndling the Key Presses and dispatches its messages approiately) It seems My_C_Application is not handling/ receiving the events.
We caught this issue and using procdump -mp we got a dump to analyze.
I automate this for Crashes with our own application which calls out to the console version of windbg, we execute the following commands for a crash :
!analyze -v; .ecxr;
Now i understand this will be of no use for a hang, so i execute additional commands after this has setup the symbol paths for me etc.
Opened log file 'C:\crash\AutomateCrashAnalysis\AutomateCrashAnalysis\bin\Debug\CrashSummary1584124051.txt'
Microsoft (R) Windows Debugger Version 6.12.0002.633 X86
Copyright (c) Microsoft Corporation. All rights reserved.
Loading Dump File [C:\Crash\My_C_Application.exe_150804_094908.dmp\My_C_Application.exe_150804_094908.dmp]
User Mini Dump File: Only registers, stack and portions of memory are available
Comment: '
*** procdump.exe -mp 7908
*** Manual dump'
Symbol search path is: C:\crash\AutomateCrashAnalysis\AutomateCrashAnalysis\bin\Debug\My_C_Application___Win32_Debug;srv*C:\SYMBOLS*http://msdl.microsoft.com/download/symbols
Executable search path is: C:\crash\AutomateCrashAnalysis\AutomateCrashAnalysis\bin\Debug\My_C_Application___Win32_Debug
Windows XP Version 2600 (Service Pack 3) UP Free x86 compatible
Product: WinNt, suite: SingleUserTS
Machine Name:
Debug session time: Tue Aug 4 09:49:13.000 2015 (UTC + 1:00)
System Uptime: 0 days 14:59:40.140
Process Uptime: 0 days 3:08:03.000
................................................................
.....................
eax=00000000 ebx=00128094 ecx=0012804c edx=7c90e514 esi=00000000 edi=7ffd5000
eip=7c90e514 esp=0012806c ebp=00128108 iopl=0 nv up ei pl zr na pe nc
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00200246
ntdll!KiFastSystemCallRet:
7c90e514 c3 ret
0:000> !analyze -v; .ecxr;
*******************************************************************************
* *
* Exception Analysis *
* *
*******************************************************************************
*** WARNING: Unable to verify checksum for mscorlib.ni.dll
*** WARNING: Unable to verify checksum for System.Windows.Forms.ni.dll
*** WARNING: Unable to verify checksum for System.ni.dll
Unable to load image C:\EPOS\ipworksssl9.dll, Win32 error 0n2
*** ERROR: Symbol file could not be found. Defaulted to export symbols for ipworksssl9.dll -
Unable to load image C:\AppPath\My_C_Application.exe, Win32 error 0n2
*** WARNING: Unable to verify checksum for My_C_Application.exe
*** ERROR: Symbol file could not be found. Defaulted to export symbols for My_C_Application.exe -
*** ERROR: Module load completed but symbols could not be loaded for xpsp2res.dll
GetPageUrlData failed, server returned HTTP status 404
URL requested: http://watson.microsoft.com/StageOne/My_C_Application_exe/0_0_0_0/unknown/0_0_0_0/00000000.htm?Retriage=1
FAULTING_IP:
+1562faf0007da9c
00000000 ?? ???
EXCEPTION_RECORD: ffffffff -- (.exr 0xffffffffffffffff)
.exr 0xffffffffffffffff
ExceptionAddress: 00000000
ExceptionCode: 80000003 (Break instruction exception)
ExceptionFlags: 00000000
NumberParameters: 0
FAULTING_THREAD: 000020f8
PROCESS_NAME: My_C_Application.exe
ERROR_CODE: (NTSTATUS) 0x80000003 - {EXCEPTION} Breakpoint A breakpoint has been reached.
EXCEPTION_CODE: (HRESULT) 0x80000003 (2147483651) - One or more arguments are invalid
MOD_LIST: <ANALYSIS/>
NTGLOBALFLAG: 0
APPLICATION_VERIFIER_FLAGS: 0
MANAGED_STACK: !dumpstack -EE
!dumpstack -EE
No export dumpstack found
LAST_CONTROL_TRANSFER: from 7c90df4a to 7c90e514
ADDITIONAL_DEBUG_TEXT: Followup set based on attribute [Is_ChosenCrashFollowupThread] from Frame:[0] on thread:[PSEUDO_THREAD]
DEFAULT_BUCKET_ID: STACKIMMUNE
PRIMARY_PROBLEM_CLASS: STACKIMMUNE
BUGCHECK_STR: APPLICATION_FAULT_STACKIMMUNE_NOSOS_WRONG_SYMBOLS
STACK_TEXT:
00000000 00000000 My_C_Application.exe+0x0
STACK_COMMAND: .cxr 00000000 ; kb ; ** Pseudo Context ** ; kb
SYMBOL_NAME: My_C_Application.exe
FOLLOWUP_NAME: MachineOwner
MODULE_NAME: My_C_Application
IMAGE_NAME: My_C_Application.exe
DEBUG_FLR_IMAGE_TIMESTAMP: 55b8bb1c
FAILURE_BUCKET_ID: STACKIMMUNE_80000003_My_C_Application.exe!Unknown
BUCKET_ID: APPLICATION_FAULT_STACKIMMUNE_NOSOS_WRONG_SYMBOLS_My_C_Application.exe
FOLLOWUP_IP:
My_C_Application+0
00400000 4d dec ebp
WATSON_STAGEONE_URL: http://watson.microsoft.com/StageOne/My_C_Application_exe/0_0_0_0/55b8bb1c/unknown/0_0_0_0/bbbbbbb4/80000003/00000000.htm?Retriage=1
Followup: MachineOwner
---------
Minidump doesn't have an exception context
Unable to get exception context, HRESULT 0x80004002
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
0:000> .lastevent
Last event: 1ee4.20f8: Break instruction exception - code 80000003 (first/second chance not available)
debugger time: Tue Aug 4 12:40:51.455 2015 (UTC + 1:00)
Is there anything of use in the above output that i can use?
Now the code we have is the exact code that is running on site, the EXE was however re-built on another PC for debuging so the symbols dont seem to load, we have seen this before so we execute the following commands:
0:000> .symopt+0x80000000
Symbol options are 0x800B0277:
0x00000001 - SYMOPT_CASE_INSENSITIVE
0x00000002 - SYMOPT_UNDNAME
0x00000004 - SYMOPT_DEFERRED_LOADS
0x00000010 - SYMOPT_LOAD_LINES
0x00000020 - SYMOPT_OMAP_FIND_NEAREST
0x00000040 - SYMOPT_LOAD_ANYTHING
0x00000200 - SYMOPT_FAIL_CRITICAL_ERRORS
0x00010000 - SYMOPT_AUTO_PUBLICS
0x00020000 - SYMOPT_NO_IMAGE_SEARCH
0x00080000 - SYMOPT_NO_PROMPTS
0x80000000 - SYMOPT_DEBUG
0:000> .reload -f -i My_C_Application.exe=00400000
DBGHELP: C:\crash\AutomateCrashAnalysis\AutomateCrashAnalysis\bin\Debug\My_C_Application___Win32_Debug\My_C_Application.exe - OK
DBGENG: C:\crash\AutomateCrashAnalysis\AutomateCrashAnalysis\bin\Debug\My_C_Application___Win32_Debug\My_C_Application.exe - Mapped image memory
DBGHELP: My_C_Application - private symbols & lines
c:\crash\automatecrashanalysis\automatecrashanalysis\bin\debug\My_C_Application___win32_debug\My_C_Application.pdb
0:000> lme
start end module name
00400000 013ec000 My_C_Application C (private pdb symbols) c:\crash\automatecrashanalysis\automatecrashanalysis\bin\debug\My_C_Application___win32_debug\My_C_Application.pdb
790c0000 79bba000 mscorlib_ni C (deferred)
7a440000 7abdf000 System_ni C (deferred)
7afd0000 7bbaf000 System_Windows_Forms_ni C (deferred)
Now we should have the symbols loaded correctly, if i execute kv we see the following:
0:000> kv
ChildEBP RetAddr Args to Child
00128068 7c90df4a 7c809590 00000002 00128094 ntdll!KiFastSystemCallRet (FPO: [0,0,0])
0012806c 7c809590 00000002 00128094 00000001 ntdll!ZwWaitForMultipleObjects+0xc (FPO: [5,0,0])
00128108 7e4195f9 00000002 00128130 00000000 kernel32!WaitForMultipleObjectsEx+0x12c (FPO: [Non-Fpo])
00128164 7752e78e 00000001 00128464 000003e8 user32!RealMsgWaitForMultipleObjectsEx+0x13e (FPO: [Non-Fpo])
0012818c 775572af 00128464 000003e8 001281b8 ole32!CCliModalLoop::BlockFn+0x80 (FPO: [Non-Fpo])
00128200 79fd05fd 00000002 000003e8 00000001 ole32!CoWaitForMultipleHandles+0xcf (FPO: [Non-Fpo])
00128220 79fd0564 00000000 000003e8 00000001 mscorwks!NT5WaitRoutine+0x51 (FPO: [Non-Fpo])
0012828c 79fd04c8 00000001 00128464 00000000 mscorwks!MsgWaitHelper+0xa5 (FPO: [Non-Fpo])
001282ac 79f6915d 00000001 00128464 00000001 mscorwks!Thread::DoAppropriateAptStateWait+0x28 (FPO: [Non-Fpo])
00128330 79f691f2 00000001 00128464 00000001 mscorwks!Thread::DoAppropriateWaitWorker+0x13c (FPO: [Non-Fpo])
00128380 79f99d40 00000001 00128464 00000001 mscorwks!Thread::DoAppropriateWait+0x40 (FPO: [Non-Fpo])
00128484 792b698f 00000000 00000000 03d5bbec mscorwks!WaitHandleNative::CorWaitOneNative+0x156 (FPO: [Non-Fpo])
001284a0 792b6945 000003e8 00000000 79317b08 mscorlib_ni+0x1f698f
001284b8 7b6f218f 00000000 00000103 0000c121 mscorlib_ni+0x1f6945
001284d0 7ba2e34b a92aae2d 79e749d8 00128668 System_Windows_Forms_ni+0x72218f
00128564 7b6f3aec 00000001 03d5bbd8 03d5bbb8 System_Windows_Forms_ni+0xa5e34b
001285a0 7b921b1b 03d5bbd8 03d5bbd8 03d5bbb8 System_Windows_Forms_ni+0x723aec
001285b8 7a932cb6 03d5ac5c 03c2d938 00000001 System_Windows_Forms_ni+0x951b1b
001285ec 7a930e6f 03d5ac5c ffffffff 00000000 System_ni+0x4f2cb6
00128638 7a93205f 03d5ac5c 00000009 00000000 System_ni+0x4f0e6f
00128654 7aaa767a 001fab80 00000001 a92aae2d System_ni+0x4f205f
001286e4 7e418734 000c00be 0000201a 00000001 System_ni+0x66767a
00128710 7e418816 030b7392 000c00be 0000201a user32!InternalCallWinProc+0x28
00128778 7e4189cd 00000000 030b7392 000c00be user32!UserCallWinProcCheckWow+0x150 (FPO: [Non-Fpo])
001287d8 7e4196c7 00128800 00000001 0012881c user32!DispatchMessageWorker+0x306 (FPO: [Non-Fpo])
001287e8 1001d222 00128800 00000000 00165008 user32!DispatchMessageA+0xf (FPO: [Non-Fpo])
WARNING: Stack unwind information not available. Following frames may be wrong.
0012881c 1007f803 00000014 00040232 100a1e04 ipworksssl9+0x1d222
001288f4 009d259f 00128924 00e238ae 00000000 ipworksssl9+0x7f803
00000000 00000000 00000000 00000000 00000000 My_C_Application!sprintf+0x9f (CONV: cdecl) [sprintf.c @ 104]
Does WaitForMultipleObjects indicate a deadlock (waiting for a Lock/CriticalSection/Mutex) ??
I was expecting to see a while loop locked up in My_C_Application but i dont, i ran ~* kp but none of these threads appear to be looping or locked in My_C_Application.
:000> ~* kp
. 0 Id: 1ee4.20f8 Suspend: 0 Teb: 7ffdf000 Unfrozen
ChildEBP RetAddr
00128068 7c90df4a ntdll!KiFastSystemCallRet
0012806c 7c809590 ntdll!ZwWaitForMultipleObjects+0xc
00128108 7e4195f9 kernel32!WaitForMultipleObjectsEx+0x12c
00128164 7752e78e user32!RealMsgWaitForMultipleObjectsEx+0x13e
0012818c 775572af ole32!CCliModalLoop::BlockFn+0x80
00128200 79fd05fd ole32!CoWaitForMultipleHandles+0xcf
00128220 79fd0564 mscorwks!NT5WaitRoutine+0x51
0012828c 79fd04c8 mscorwks!MsgWaitHelper+0xa5
001282ac 79f6915d mscorwks!Thread::DoAppropriateAptStateWait+0x28
00128330 79f691f2 mscorwks!Thread::DoAppropriateWaitWorker+0x13c
00128380 79f99d40 mscorwks!Thread::DoAppropriateWait+0x40
00128484 792b698f mscorwks!WaitHandleNative::CorWaitOneNative+0x156
001284a0 792b6945 mscorlib_ni+0x1f698f
001284b8 7b6f218f mscorlib_ni+0x1f6945
001284d0 7ba2e34b System_Windows_Forms_ni+0x72218f
00128564 7b6f3aec System_Windows_Forms_ni+0xa5e34b
001285a0 7b921b1b System_Windows_Forms_ni+0x723aec
001285b8 7a932cb6 System_Windows_Forms_ni+0x951b1b
001285ec 7a930e6f System_ni+0x4f2cb6
00128638 7a93205f System_ni+0x4f0e6f
00128654 7aaa767a System_ni+0x4f205f
001286e4 7e418734 System_ni+0x66767a
00128710 7e418816 user32!InternalCallWinProc+0x28
00128778 7e4189cd user32!UserCallWinProcCheckWow+0x150
001287d8 7e4196c7 user32!DispatchMessageWorker+0x306
001287e8 1001d222 user32!DispatchMessageA+0xf
WARNING: Stack unwind information not available. Following frames may be wrong.
0012881c 1007f803 ipworksssl9+0x1d222
001288f4 009d259f ipworksssl9+0x7f803
00000000 00000000 My_C_Application!sprintf(char * string = <Memory access error>, char * format = <Memory access error>)+0x9f [sprintf.c @ 104]
1 Id: 1ee4.2364 Suspend: 0 Teb: 7ffdd000 Unfrozen
ChildEBP RetAddr
01edfe64 7e4191be ntdll!KiFastSystemCallRet
01edfe8c 00986a0f user32!NtUserGetMessage+0xc
01edff80 009867d8 My_C_Application!WMConnection::threadFunc(void)+0x20a [C:\Code\BuildFolder\My_C_Application\SourcePath\WMConnection.cpp @ 139]
01edffb4 7c80b729 My_C_Application!wmConnectionThreadFunc(void * lpData = 0x01d5b970)+0x62 [C:\Code\BuildFolder\My_C_Application\SourcePath\WMConnection.cpp @ 80]
01edffec 00000000 kernel32!BaseThreadStart+0x37
2 Id: 1ee4.204c Suspend: 0 Teb: 7ffdc000 Unfrozen
ChildEBP RetAddr
0214fecc 7c90df4a ntdll!KiFastSystemCallRet
0214fed0 7c809590 ntdll!ZwWaitForMultipleObjects+0xc
0214ff6c 7c80a115 kernel32!WaitForMultipleObjectsEx+0x12c
0214ff88 72d2312a kernel32!WaitForMultipleObjects+0x18
0214ffb4 7c80b729 wdmaud!MixerCallbackThread+0x42
0214ffec 00000000 kernel32!BaseThreadStart+0x37
3 Id: 1ee4.210c Suspend: 0 Teb: 7ffdb000 Unfrozen
ChildEBP RetAddr
0224fd84 7c90df4a ntdll!KiFastSystemCallRet
0224fd88 7c809590 ntdll!ZwWaitForMultipleObjects+0xc
0224fe24 7c80a115 kernel32!WaitForMultipleObjectsEx+0x12c
0224fe40 73f114a2 kernel32!WaitForMultipleObjects+0x18
0224fe58 73f12862 dsound!WaitObjectArray+0x17
0224ff78 73f198df dsound!CThread::TpWaitObjectArray+0x51
0224ff98 73f12896 dsound!CCallbackEventPool::ThreadProc+0x1a
0224ffa4 73f1b2e9 dsound!CThread::ThreadLoop+0x1d
0224ffac 73f1b2ae dsound!CThread::PrivateThreadProc+0x32
0224ffb4 7c80b729 dsound!CThread::ThreadStartRoutine+0xd
0224ffec 00000000 kernel32!BaseThreadStart+0x37
4 Id: 1ee4.2344 Suspend: 0 Teb: 7ffda000 Unfrozen
ChildEBP RetAddr
0244fd8c 7c90df4a ntdll!KiFastSystemCallRet
0244fd90 7c809590 ntdll!ZwWaitForMultipleObjects+0xc
0244fe2c 7c80a115 kernel32!WaitForMultipleObjectsEx+0x12c
0244fe48 73f114a2 kernel32!WaitForMultipleObjects+0x18
0244fe60 73f12862 dsound!WaitObjectArray+0x17
0244ff80 73f1292b dsound!CThread::TpWaitObjectArray+0x51
0244ff98 73f12896 dsound!CDirectSoundAdministrator::ThreadProc+0x16
0244ffa4 73f1b2e9 dsound!CThread::ThreadLoop+0x1d
0244ffac 73f1b2ae dsound!CThread::PrivateThreadProc+0x32
0244ffb4 7c80b729 dsound!CThread::ThreadStartRoutine+0xd
0244ffec 00000000 kernel32!BaseThreadStart+0x37
5 Id: 1ee4.22d8 Suspend: 0 Teb: 7ffd9000 Unfrozen
ChildEBP RetAddr
0256ff08 7c90df5a ntdll!KiFastSystemCallRet
0256ff0c 7c8025db ntdll!NtWaitForSingleObject+0xc
0256ff70 7c802542 kernel32!WaitForSingleObjectEx+0xa8
0256ff84 5c57ae32 kernel32!WaitForSingleObject+0x12
0256ffac 5c57bec0 dmime!CPerformance::Realtime+0x127
0256ffb4 7c80b729 dmime!CPerformance::Release+0x94
0256ffec 00000000 kernel32!BaseThreadStart+0x37
6 Id: 1ee4.2190 Suspend: 0 Teb: 7ffd8000 Unfrozen
ChildEBP RetAddr
0266feec 7c90df5a ntdll!KiFastSystemCallRet
0266fef0 7c8025db ntdll!NtWaitForSingleObject+0xc
0266ff54 7c802542 kernel32!WaitForSingleObjectEx+0xa8
0266ff68 5c57effc kernel32!WaitForSingleObject+0x12
0266ffac 5c57f04d dmime!CPerformance::Transport+0x47d
0266ffb4 7c80b729 dmime!CPerformance::Transport+0x4ce
0266ffec 00000000 kernel32!BaseThreadStart+0x37
7 Id: 1ee4.1dfc Suspend: 0 Teb: 7ffd7000 Unfrozen
ChildEBP RetAddr
029dff10 7c90df5a ntdll!KiFastSystemCallRet
029dff14 7c8025db ntdll!NtWaitForSingleObject+0xc
029dff78 7c802542 kernel32!WaitForSingleObjectEx+0xa8
029dff8c 6c9ae4b5 kernel32!WaitForSingleObject+0x12
029dffac 6c9ae4ed dmsynth!CDSLinkList::SynthProc+0x95
029dffb4 7c80b729 dmsynth!CDSLinkList::SynthProc+0xcd
029dffec 00000000 kernel32!BaseThreadStart+0x37
8 Id: 1ee4.2778 Suspend: 0 Teb: 7ffd6000 Unfrozen
ChildEBP RetAddr
02adff78 7c90da4a ntdll!KiFastSystemCallRet
02adff7c 71a5d320 ntdll!NtRemoveIoCompletion+0xc
02adffb4 7c80b729 mswsock!SockAsyncThread+0x5a
02adffec 00000000 kernel32!BaseThreadStart+0x37
9 Id: 1ee4.2188 Suspend: 0 Teb: 7ffd4000 Unfrozen
ChildEBP RetAddr
02eafce8 7c90df4a ntdll!KiFastSystemCallRet
02eafcec 7c92a51a ntdll!ZwWaitForMultipleObjects+0xc
02eaffb4 7c80b729 ntdll!RtlpWaitThread+0x13d
02eaffec 00000000 kernel32!BaseThreadStart+0x37
10 Id: 1ee4.ee0 Suspend: 0 Teb: 7ffaf000 Unfrozen
ChildEBP RetAddr
02fafec8 7c90df4a ntdll!KiFastSystemCallRet
02fafecc 7c809590 ntdll!ZwWaitForMultipleObjects+0xc
02faff68 7c80a115 kernel32!WaitForMultipleObjectsEx+0x12c
02faff84 769c87bd kernel32!WaitForMultipleObjects+0x18
02faffb4 7c80b729 userenv!NotificationThread+0x5f
02faffec 00000000 kernel32!BaseThreadStart+0x37
11 Id: 1ee4.26b4 Suspend: 0 Teb: 7ffae000 Unfrozen
ChildEBP RetAddr
0333fe38 7c90df4a ntdll!KiFastSystemCallRet
0333fe3c 7c809590 ntdll!ZwWaitForMultipleObjects+0xc
0333fed8 7c80a115 kernel32!WaitForMultipleObjectsEx+0x12c
0333fef4 79f86a21 kernel32!WaitForMultipleObjects+0x18
0333ff54 79f8697e mscorwks!DebuggerRCThread::MainLoop+0xe9
0333ff84 79f868a5 mscorwks!DebuggerRCThread::ThreadProc+0xe5
0333ffb4 7c80b729 mscorwks!DebuggerRCThread::ThreadProcStatic+0x9c
0333ffec 00000000 kernel32!BaseThreadStart+0x37
12 Id: 1ee4.bc8 Suspend: 0 Teb: 7ffad000 Unfrozen
ChildEBP RetAddr
034ffcd0 7c90df4a ntdll!KiFastSystemCallRet
034ffcd4 7c809590 ntdll!ZwWaitForMultipleObjects+0xc
034ffd70 7c80a115 kernel32!WaitForMultipleObjectsEx+0x12c
034ffd8c 79fc5107 kernel32!WaitForMultipleObjects+0x18
034ffdac 79fc9568 mscorwks!WKS::WaitForFinalizerEvent+0x77
034ffdc0 79e9b08f mscorwks!WKS::GCHeap::FinalizerThreadWorker+0x49
034ffdd4 79e9b02b mscorwks!Thread::DoADCallBack+0x32a
034ffe68 79e9af51 mscorwks!Thread::ShouldChangeAbortToUnload+0xe3
034ffea4 79f73514 mscorwks!Thread::ShouldChangeAbortToUnload+0x30a
034ffecc 79f73525 mscorwks!ManagedThreadBase_NoADTransition+0x32
034ffedc 79fc019c mscorwks!ManagedThreadBase::FinalizerBase+0xd
034fff14 79fc4551 mscorwks!WKS::GCHeap::FinalizerThreadStart+0xbb
034fffb4 7c80b729 mscorwks!Thread::intermediateThreadProc+0x49
034fffec 00000000 kernel32!BaseThreadStart+0x37
13 Id: 1ee4.23b8 Suspend: 0 Teb: 7ffaa000 Unfrozen
ChildEBP RetAddr
03abfee4 7c90df5a ntdll!KiFastSystemCallRet
03abfee8 7c8025db ntdll!NtWaitForSingleObject+0xc
03abff4c 7c802542 kernel32!WaitForSingleObjectEx+0xa8
03abff60 009a6408 kernel32!WaitForSingleObject+0x12
03abff7c 009dc2d7 My_C_Application!file4writeDelayMain+0x38
03abffb4 7c80b729 My_C_Application!_threadstart(void * ptd = 0x01d5fa50)+0xa7 [thread.c @ 187]
03abffec 00000000 kernel32!BaseThreadStart+0x37
14 Id: 1ee4.fa8 Suspend: 0 Teb: 7ffa9000 Unfrozen
ChildEBP RetAddr
05c6fee4 7c90df5a ntdll!KiFastSystemCallRet
05c6fee8 7c8025db ntdll!NtWaitForSingleObject+0xc
05c6ff4c 7c802542 kernel32!WaitForSingleObjectEx+0xa8
05c6ff60 009a8128 kernel32!WaitForSingleObject+0x12
05c6ff7c 009dc2d7 My_C_Application!file4advanceReadMain+0x38
05c6ffb4 7c80b729 My_C_Application!_threadstart(void * ptd = 0x01d5faf8)+0xa7 [thread.c @ 187]
05c6ffec 00000000 kernel32!BaseThreadStart+0x37
15 Id: 1ee4.b0 Suspend: 0 Teb: 7ffa8000 Unfrozen
ChildEBP RetAddr
05d6fed4 7c90df5a ntdll!KiFastSystemCallRet
05d6fed8 7c8025db ntdll!NtWaitForSingleObject+0xc
05d6ff3c 7c802542 kernel32!WaitForSingleObjectEx+0xa8
05d6ff50 77596f14 kernel32!WaitForSingleObject+0x12
05d6ff6c 77567135 ole32!CDllHost::MTAWorkerLoop+0x2b
05d6ff8c 775263f4 ole32!CDllHost::WorkerThread+0xc1
05d6ff94 774fe4ba ole32!DLLHostThreadEntry+0xd
05d6ffa8 774fe522 ole32!CRpcThread::WorkerLoop+0x1e
05d6ffb4 7c80b729 ole32!CRpcThreadCache::RpcWorkerThreadEntry+0x1b
05d6ffec 00000000 kernel32!BaseThreadStart+0x37
16 Id: 1ee4.232c Suspend: 0 Teb: 7ffa5000 Unfrozen
ChildEBP RetAddr
0df8fa74 7c90d21a ntdll!KiFastSystemCallRet
0df8fa78 7c8023f1 ntdll!NtDelayExecution+0xc
0df8fad0 7c802455 kernel32!SleepEx+0x61
0df8fae0 005594cf kernel32!Sleep+0xf
0df8ff7c 009dc2d7 My_C_Application!Read_FPs_Thread(void * pvoid = 0x00ecb058)+0x888 [C:\Code\BuildFolder\My_C_Application\SourcePath\cbe_pump.cpp @ 2085]
0df8ffb4 7c80b729 My_C_Application!_threadstart(void * ptd = 0x02fc6018)+0xa7 [thread.c @ 187]
0df8ffec 00000000 kernel32!BaseThreadStart+0x37
17 Id: 1ee4.2590 Suspend: 0 Teb: 7ffa7000 Unfrozen
ChildEBP RetAddr
05e6fe14 7c90daaa ntdll!KiFastSystemCallRet
05e6fe18 77e765e3 ntdll!NtReplyWaitReceivePortEx+0xc
05e6ff80 77e76caf rpcrt4!LRPC_ADDRESS::ReceiveLotsaCalls+0x12a
05e6ff88 77e76ad1 rpcrt4!RecvLotsaCallsWrapper+0xd
05e6ffa8 77e76c97 rpcrt4!BaseCachedThreadRoutine+0x79
05e6ffb4 7c80b729 rpcrt4!ThreadStartRoutine+0x1a
05e6ffec 00000000 kernel32!BaseThreadStart+0x37
18 Id: 1ee4.1b54 Suspend: 0 Teb: 7ffa6000 Unfrozen
ChildEBP RetAddr
0e22fe50 7c90df4a ntdll!KiFastSystemCallRet
0e22fe54 7c809590 ntdll!ZwWaitForMultipleObjects+0xc
0e22fef0 7e4195f9 kernel32!WaitForMultipleObjectsEx+0x12c
0e22ff4c 7e4196a8 user32!RealMsgWaitForMultipleObjectsEx+0x13e
0e22ff68 4ec674b2 user32!MsgWaitForMultipleObjects+0x1f
0e22ffb4 7c80b729 GdiPlus!BackgroundThreadProc+0x59
0e22ffec 00000000 kernel32!BaseThreadStart+0x37
19 Id: 1ee4.23bc Suspend: 0 Teb: 7ffa4000 Unfrozen
ChildEBP RetAddr
0e84f6d8 7c90d21a ntdll!KiFastSystemCallRet
0e84f6dc 7c8023f1 ntdll!NtDelayExecution+0xc
0e84f734 79e889d8 kernel32!SleepEx+0x61
0e84f768 79f0e0b8 mscorwks!EESleepEx+0xbb
0e84f778 79f0e0a6 mscorwks!CExecutionEngine::ClrSleepEx+0xe
0e84f78c 79f0e065 mscorwks!ClrSleepEx+0x14
0e84f7c8 79f0e166 mscorwks!Thread::UserSleep+0x63
0e84f868 0e3af62b mscorwks!ThreadNative::Sleep+0xce
WARNING: Frame IP not in any known module. Following frames may be wrong.
0e84f8b8 792d7026 0xe3af62b
0e84f8c4 792e04af mscorlib_ni+0x217026
0e84f8d8 792d6fa4 mscorlib_ni+0x2204af
0e84f8f0 79e71b4c mscorlib_ni+0x216fa4
0e84f900 79e88e45 mscorwks!CallDescrWorker+0x33
0e84f980 79e96461 mscorwks!CallDescrWorkerWithHandler+0xa3
0e84fab8 79e96494 mscorwks!MethodDesc::CallDescr+0x19c
0e84fad4 79e964b2 mscorwks!MethodDesc::CallTargetWorker+0x1f
0e84faec 79f0f9b7 mscorwks!MethodDescCallSite::CallWithValueTypes_RetArgSlot+0x1a
0e84fcd4 79e9b08f mscorwks!ThreadNative::KickOffThread_Worker+0x192
0e84fce8 79e9b02b mscorwks!Thread::DoADCallBack+0x32a
0e84fd7c 79e9af51 mscorwks!Thread::ShouldChangeAbortToUnload+0xe3
0e84fdb8 79e9b0dd mscorwks!Thread::ShouldChangeAbortToUnload+0x30a
0e84fde0 79f0f788 mscorwks!Thread::ShouldChangeAbortToUnload+0x33e
0e84fdf8 79f0f862 mscorwks!ManagedThreadBase::KickOff+0x13
0e84fe94 79fc4551 mscorwks!ThreadNative::KickOffThread+0x269
0e84ffb4 7c80b729 mscorwks!Thread::intermediateThreadProc+0x49
0e84ffec 00000000 kernel32!BaseThreadStart+0x37
20 Id: 1ee4.27c8 Suspend: 0 Teb: 7ffa2000 Unfrozen
ChildEBP RetAddr
0eb0fed0 7c90d21a ntdll!KiFastSystemCallRet
0eb0fed4 7c8023f1 ntdll!NtDelayExecution+0xc
0eb0ff2c 79ee7c61 kernel32!SleepEx+0x61
0eb0ffa8 79ee7b0f mscorwks!ThreadpoolMgr::TimerThreadFire+0x6d
0eb0ffb4 7c80b729 mscorwks!ThreadpoolMgr::TimerThreadStart+0x57
0eb0ffec 00000000 kernel32!BaseThreadStart+0x37
21 Id: 1ee4.2710 Suspend: 0 Teb: 7ffa1000 Unfrozen
ChildEBP RetAddr
0e5cff10 7e4191be ntdll!KiFastSystemCallRet
0e5cff30 7752ffc6 user32!NtUserGetMessage+0xc
0e5cff70 775264c1 ole32!CDllHost::STAWorkerLoop+0x72
0e5cff8c 775263f4 ole32!CDllHost::WorkerThread+0xc8
0e5cff94 774fe4ba ole32!DLLHostThreadEntry+0xd
0e5cffa8 774fe522 ole32!CRpcThread::WorkerLoop+0x1e
0e5cffb4 7c80b729 ole32!CRpcThreadCache::RpcWorkerThreadEntry+0x1b
0e5cffec 00000000 kernel32!BaseThreadStart+0x37
22 Id: 1ee4.2530 Suspend: 0 Teb: 7ffde000 Unfrozen
ChildEBP RetAddr
01c4fd74 7c90da4a ntdll!KiFastSystemCallRet
01c4fd78 7c80a7e6 ntdll!NtRemoveIoCompletion+0xc
01c4fda4 79f65810 kernel32!GetQueuedCompletionStatus+0x29
01c4fe14 79fc4551 mscorwks!ThreadpoolMgr::CompletionPortThreadStart+0x141
01c4ffb4 7c80b729 mscorwks!Thread::intermediateThreadProc+0x49
01c4ffec 00000000 kernel32!BaseThreadStart+0x37
Is there any other commands i can run to figure out where this Lock/Loop is called from in My_C_Application??
Additions:
As requested by EdChum, it would appear from this we are not waiting on any Locks
0:000> !cs -s -l -o
-----------------------------------------
DebugInfo = 0x0016eea8
Critical section = 0x01d59c60 (+0x1D59C60)
LOCKED
LockCount = 0x0
OwningThread = 0x000020f8
RecursionCount = 0x1
LockSemaphore = 0x0
SpinCount = 0x00000000
OwningThread DbgId = ~0s
OwningThread Stack =
ChildEBP RetAddr Args to Child
00128068 7c90df4a 7c809590 00000002 00128094 ntdll!KiFastSystemCallRet (FPO: [0,0,0])
0012806c 7c809590 00000002 00128094 00000001 ntdll!ZwWaitForMultipleObjects+0xc (FPO: [5,0,0])
00128108 7e4195f9 00000002 00128130 00000000 kernel32!WaitForMultipleObjectsEx+0x12c (FPO: [Non-Fpo])
00128164 7752e78e 00000001 00128464 000003e8 user32!RealMsgWaitForMultipleObjectsEx+0x13e (FPO: [Non-Fpo])
0012818c 775572af 00128464 000003e8 001281b8 ole32!CCliModalLoop::BlockFn+0x80 (FPO: [Non-Fpo])
00128200 79fd05fd 00000002 000003e8 00000001 ole32!CoWaitForMultipleHandles+0xcf (FPO: [Non-Fpo])
00128220 79fd0564 00000000 000003e8 00000001 mscorwks!NT5WaitRoutine+0x51 (FPO: [Non-Fpo])
0012828c 79fd04c8 00000001 00128464 00000000 mscorwks!MsgWaitHelper+0xa5 (FPO: [Non-Fpo])
001282ac 79f6915d 00000001 00128464 00000001 mscorwks!Thread::DoAppropriateAptStateWait+0x28 (FPO: [Non-Fpo])
00128330 79f691f2 00000001 00128464 00000001 mscorwks!Thread::DoAppropriateWaitWorker+0x13c (FPO: [Non-Fpo])
00128380 79f99d40 00000001 00128464 00000001 mscorwks!Thread::DoAppropriateWait+0x40 (FPO: [Non-Fpo])
00128484 792b698f 00000000 00000000 03d5bbec mscorwks!WaitHandleNative::CorWaitOneNative+0x156 (FPO: [Non-Fpo])
001284a0 792b6945 000003e8 00000000 79317b08 mscorlib_ni+0x1f698f
001284b8 7b6f218f 00000000 00000103 0000c121 mscorlib_ni+0x1f6945
001284d0 7ba2e34b a92aae2d 79e749d8 00128668 System_Windows_Forms_ni+0x72218f
00128564 7b6f3aec 00000001 03d5bbd8 03d5bbb8 System_Windows_Forms_ni+0xa5e34b
001285a0 7b921b1b 03d5bbd8 03d5bbd8 03d5bbb8 System_Windows_Forms_ni+0x723aec
001285b8 7a932cb6 03d5ac5c 03c2d938 00000001 System_Windows_Forms_ni+0x951b1b
001285ec 7a930e6f 03d5ac5c ffffffff 00000000 System_ni+0x4f2cb6
00128638 7a93205f 03d5ac5c 00000009 00000000 System_ni+0x4f0e6f
ntdll!RtlpStackTraceDataBase is NULL. Probably the stack traces are not enabled.
Thanks in Advance
From what you show, it looks like you are deadlocking your message loop.
First thing to recognize, when you see frames like this:
mscorlib_ni+0x1f698f
mscorlib_ni+0x1f6945
System_ni+0x4f2cb6
That is jitted managed code from your application, you won't have normal symbols for it because the code gets built and placed there at run-time. You can use !ip2md mscorlib_ni+0x1f698f
(once SOS is loaded) to see the managed function name. Looking at the jitted frames will help with the "I don't see any of my code running" (it is, it just isn't obvious).
Looking at this stack, the things that pop out to me is the call to DispatchMessage() which is used in a standard message loop, it then calls into your application code (totally expected) to handle the messages, but then there is a WaitOne called. You will need to inspect your code to see what event you are waiting on. Most likely it is waiting on something that can't be signaled if other messages cannot be processed.
mscorwks!WaitHandleNative::CorWaitOneNative+0x156 (FPO: [Non-Fpo])
mscorlib_ni+0x1f698f <<<<<< look here
... jitted app code ...
user32!InternalCallWinProc+0x28
user32!UserCallWinProcCheckWow+0x150 (FPO: [Non-Fpo])
user32!DispatchMessageWorker+0x306 (FPO: [Non-Fpo])
user32!DispatchMessageA+0xf (FPO: [Non-Fpo])
...
User contributions licensed under CC BY-SA 3.0