I am trying to troubleshoot a COM + application that interrupts intermittently. The last time it was locked, I was able to take a usermode dump of the dllhost process and analyze it using WinDbg. After checking all the threads and locks it all comes down to a critical section that belongs to this topic:
ChildEBP RetAddr Args to Child
0deefd00 7c822114 77e6bb08 000004d4 00000000 ntdll!KiFastSystemCallRet
0deefd04 77e6bb08 000004d4 00000000 0deefd48 ntdll!ZwWaitForSingleObject+0xc
0deefd74 77e6ba72 000004d4 00002710 00000000 kernel32!WaitForSingleObjectEx+0xac
0deefd88 75bb22b9 000004d4 00002710 00000000 kernel32!WaitForSingleObject+0x12
0deeffb8 77e660b9 000a5cc0 00000000 00000000 comsvcs!PingThread+0xf6
0deeffec 00000000 75bb21f1 000a5cc0 00000000 kernel32!BaseThreadStart+0x34
The object that he expects is an event:
0:016> !handle 4d4 f
Handle 000004d4
Type Event
Attributes 0
GrantedAccess 0x1f0003:
Delete,ReadControl,WriteDac,WriteOwner,Synch
QueryState,ModifyState
HandleCount 2
PointerCount 4
Name <none>
No object specific information available
As far as I can tell, an event is never signaled, causing a thread to hang and hold several other threads in the process. Anyone have any suggestions for further steps in figuring out what is happening?
Now, seeing that the method is called PingThread, is it possible that it is trying to execute another thread in a process that has already reached an impasse?
UPDATE
Oracle 10.2.0.1. , , , Oracle.