From: mannu on
Hello,

An application has more than 64 child processes.

To check if any child process exited,
one of the application thread calls "WaitForMultipleObjects".

Since the limit for number of handles that can be
supplied to "WaitForMultipleObjects" is 64,
a loop that only passes 62 process handles
to "WaitForMultipleObjects" in one iteration
is present. In the next iteration and so on, the
remaining process handles (62 or less at a time)
are passed to "WaitForMultipleObjects".
The timeout passed to "WaitForMultipleObjects"
is 1 second and the bWaitAll is false;

There are other threads in application
that create windows and use "GetMessage",
"MsgWaitForMultipleObjects".
The calls to "MsgWaitForMultipleObjects" is with timeout.

All the threads in the application are hung as shown in the below
stack trace:
--------------------------------------------------------------------------------------------------------------

0:000> ~*kP

.. 0 Id: 658.65c Suspend: 2 Teb: 7ffde000 Unfrozen
ChildEBP RetAddr
0012f86c 77f4303b SharedUserData!SystemCallStub+0x4
0012f870 77e4905d ntdll!NtReadFile+0xc
0012f8d8 77db51f1 kernel32!ReadFile+0x16c
0012f904 77db5297 advapi32!ScGetPipeInput+0x28
0012f974 77db498b advapi32!ScDispatcherLoop+0x4c
0012fbd4 00440fdb advapi32!StartServiceCtrlDispatcherW+0xe2
/* main thread */
....

1 Id: 658.6e8 Suspend: 2 Teb: 7ffdd000 Unfrozen
ChildEBP RetAddr
00f1fc18 77f4372d SharedUserData!SystemCallStub+0x4
00f1fc1c 77e41bfa ntdll!NtWaitForMultipleObjects+0xc
00f1fcc4 77e4b0e4 kernel32!WaitForMultipleObjectsEx+0x11a
00f1fcdc 00443a33 kernel32!WaitForMultipleObjects+0x17
[d:\work\sources\trunk\thirdparty\ace-5.6\ace_wrappers\ace
\process_manager.cpp
@ 831]
00f1fdb0 0042f89f svagents!ACE_Process_Manager::wait(
class ACE_Time_Value * timeout =
0x00f1fdc4)+0xe0
[d:\work\sources\trunk\thirdparty\ace-5.6\ace_wrappers\ace
\process_manager.cpp
@ 734]
/* thread that is waiting for exit of children ;
* timeout: 1 second */
....

2 Id: 658.74c Suspend: 2 Teb: 7ffdc000 Unfrozen
ChildEBP RetAddr
0126ff7c 77f430c7 SharedUserData!SystemCallStub+0x4
0126ff80 71b246f7 ntdll!ZwRemoveIoCompletion+0xc
0126ffb8 77e4a990 mswsock!SockAsyncThread+0x67
0126ffec 00000000 kernel32!BaseThreadStart+0x34
/* Do not know what is this thread */

3 Id: 658.790 Suspend: 2 Teb: 7ffdb000 Unfrozen
ChildEBP RetAddr
0136fd60 77f43741 SharedUserData!SystemCallStub+0x4
0136fd64 77e41817 ntdll!ZwWaitForSingleObject+0xc
0136fdd4 77e4168f kernel32!WaitForSingleObjectEx+0xac
0136fde4 00455632 kernel32!WaitForSingleObject+0xf
0136fe2c 00441620 svagents!ACE_OS::event_timedwait(
void ** event = 0x00851d9c,
class ACE_Time_Value * timeout = 0x0085aabc,
int use_absolute_time = 14333664)+0x92
[d:\work\sources\trunk\thirdparty\ace-5.6\ace_wrappers\ace
\os_ns_thread.cpp @
3052]
0136fe3c 00684e5a svagents!ACE_Event::wait(
class ACE_Time_Value * abstime = 0x00851d9c,
int use_absolute_time = 8759996)+0x10
[d:\work\sources\trunk\thirdparty\ace-5.6\ace_wrappers\ace\event.cpp @
63]
/* waiting on event;
* timeout: 60 seconds */
....

4 Id: 658.794 Suspend: 2 Teb: 7ffda000 Unfrozen
ChildEBP RetAddr
0146fca8 77f4372d SharedUserData!SystemCallStub+0x4
0146fcac 77e41bfa ntdll!NtWaitForMultipleObjects+0xc
0146fd54 77d02695 kernel32!WaitForMultipleObjectsEx+0x11a
0146fdb0 77d037f0 user32!RealMsgWaitForMultipleObjectsEx+0x13f
0146fdcc 00406386 user32!MsgWaitForMultipleObjects+0x1d
/* calling "MsgWaitForMultipleObjects" for timeout;
* timeout 5 seconds */
....

5 Id: 658.798 Suspend: 2 Teb: 7ffd9000 Unfrozen
ChildEBP RetAddr
0156fef4 77d01758 SharedUserData!SystemCallStub+0x4
0156fef8 77d070e0 user32!NtUserGetMessage+0xc
0156ff1c 004288cb user32!GetMessageA+0x8b
/* another thread that does createwindow and process messages */
....

6 Id: 658.c5c Suspend: 2 Teb: 7ffd7000 Unfrozen
ChildEBP RetAddr
018ffe20 77f4313f SharedUserData!SystemCallStub+0x4
018ffe24 77c52555 ntdll!NtReplyWaitReceivePortEx+0xc
018fff8c 77c65159 rpcrt4!LRPC_ADDRESS::ReceiveLotsaCalls+0x193
018fff90 77c650a1 rpcrt4!RecvLotsaCallsWrapper+0x9
018fffb0 77c65187 rpcrt4!BaseCachedThreadRoutine+0x9c
018fffb8 77e4a990 rpcrt4!ThreadStartRoutine+0x17
018fffec 00000000 kernel32!BaseThreadStart+0x34
/* Do not know what is this thread */

Explanation:
-----------------
THREAD NUMBER EXPLANATION

0 Application Main thread (shows
proper stack)

1 Application thread that waits for
children

2 Do not know about this thread
Is hang because of this thread ?

3 Application thread that waits on
event

4 Application thread that calls
"MsgWaitForMultipleObjects" for
some timeout purpose

5 Application thread that creates a
window and processes
messages from it.

6 Do not know about this thread
Is hang because of this thread ?


From the MSDN manual page of "WaitForMultipleObjects":
==========================================

DWORD WINAPI WaitForMultipleObjects(
__in DWORD nCount,
__in const HANDLE *lpHandles,
__in BOOL bWaitAll,
__in DWORD dwMilliseconds
);

....

"Use caution when calling the wait functions and code that directly or
indirectly creates windows. If a thread creates any windows, it must
process messages. Message broadcasts are sent to all windows in the
system. A thread that uses a wait function with no time-out interval
may cause the system to become deadlocked. Two examples of code that
indirectly creates windows are DDE and the CoInitialize function.
Therefore, if you have a thread that creates windows, use
MsgWaitForMultipleObjects or MsgWaitForMultipleObjectsEx, rather than
WaitForMultipleObjects".

-> But all the "WaitForMultipleObjects" and the
"MsgWaitForMultipleObjects" calls are being made with timeouts
and the "bWaitAll" is false.


I am unable to find is hang because of the application threads or the
other unknown threads.

Can there be some suggestions on how to find the cause of all threads
being hung and
what has initiated the hang ?

I have created the process dump from windbg. Using this, can we derive
some more information about
hung reason ?

Thanks and Regards,
Manish Singh.
From: mannu on
On Jul 7, 10:44 am, mannu <manishsingh...(a)gmail.com> wrote:
> Hello,
>
> An application has more than 64 child processes.
>
> To check if any child process exited,
> one of the application thread calls "WaitForMultipleObjects".
>
> Since the limit for number of handles that can be
> supplied to "WaitForMultipleObjects" is 64,
> a loop that only passes 62 process handles
> to "WaitForMultipleObjects" in one iteration
> is present. In the next iteration and so on, the
> remaining process handles (62 or less at a time)
> are passed to "WaitForMultipleObjects".
> The timeout passed to "WaitForMultipleObjects"
> is 1 second and the bWaitAll is false;
>
> There are other threads in application
> that create windows and use "GetMessage",
> "MsgWaitForMultipleObjects".
> The calls to "MsgWaitForMultipleObjects" is with timeout.
>
> All the threads in the application are hung as shown in the below
> stack trace:
> --------------------------------------------------------------------------------------------------------------
>
> 0:000> ~*kP
>
> .  0  Id: 658.65c Suspend: 2 Teb: 7ffde000 Unfrozen
> ChildEBP RetAddr
> 0012f86c 77f4303b SharedUserData!SystemCallStub+0x4
> 0012f870 77e4905d ntdll!NtReadFile+0xc
> 0012f8d8 77db51f1 kernel32!ReadFile+0x16c
> 0012f904 77db5297 advapi32!ScGetPipeInput+0x28
> 0012f974 77db498b advapi32!ScDispatcherLoop+0x4c
> 0012fbd4 00440fdb advapi32!StartServiceCtrlDispatcherW+0xe2
> /* main thread */
> ...
>
>    1  Id: 658.6e8 Suspend: 2 Teb: 7ffdd000 Unfrozen
> ChildEBP RetAddr
> 00f1fc18 77f4372d SharedUserData!SystemCallStub+0x4
> 00f1fc1c 77e41bfa ntdll!NtWaitForMultipleObjects+0xc
> 00f1fcc4 77e4b0e4 kernel32!WaitForMultipleObjectsEx+0x11a
> 00f1fcdc 00443a33 kernel32!WaitForMultipleObjects+0x17
> [d:\work\sources\trunk\thirdparty\ace-5.6\ace_wrappers\ace
> \process_manager.cpp
> @ 831]
> 00f1fdb0 0042f89f svagents!ACE_Process_Manager::wait(
>                         class ACE_Time_Value * timeout =
> 0x00f1fdc4)+0xe0
> [d:\work\sources\trunk\thirdparty\ace-5.6\ace_wrappers\ace
> \process_manager.cpp
> @ 734]
> /* thread that is waiting for exit of children ;
>  * timeout: 1 second */
> ...
>
>    2  Id: 658.74c Suspend: 2 Teb: 7ffdc000 Unfrozen
> ChildEBP RetAddr
> 0126ff7c 77f430c7 SharedUserData!SystemCallStub+0x4
> 0126ff80 71b246f7 ntdll!ZwRemoveIoCompletion+0xc
> 0126ffb8 77e4a990 mswsock!SockAsyncThread+0x67
> 0126ffec 00000000 kernel32!BaseThreadStart+0x34
> /* Do not know what is this thread */
>
>    3  Id: 658.790 Suspend: 2 Teb: 7ffdb000 Unfrozen
> ChildEBP RetAddr
> 0136fd60 77f43741 SharedUserData!SystemCallStub+0x4
> 0136fd64 77e41817 ntdll!ZwWaitForSingleObject+0xc
> 0136fdd4 77e4168f kernel32!WaitForSingleObjectEx+0xac
> 0136fde4 00455632 kernel32!WaitForSingleObject+0xf
> 0136fe2c 00441620 svagents!ACE_OS::event_timedwait(
>                         void ** event = 0x00851d9c,
>                         class ACE_Time_Value * timeout = 0x0085aabc,
>                         int use_absolute_time = 14333664)+0x92
> [d:\work\sources\trunk\thirdparty\ace-5.6\ace_wrappers\ace
> \os_ns_thread.cpp @
> 3052]
> 0136fe3c 00684e5a svagents!ACE_Event::wait(
>                         class ACE_Time_Value * abstime = 0x00851d9c,
>                         int use_absolute_time = 8759996)+0x10
> [d:\work\sources\trunk\thirdparty\ace-5.6\ace_wrappers\ace\event.cpp @
> 63]
> /* waiting on event;
>  * timeout: 60 seconds */
> ...
>
>    4  Id: 658.794 Suspend: 2 Teb: 7ffda000 Unfrozen
> ChildEBP RetAddr
> 0146fca8 77f4372d SharedUserData!SystemCallStub+0x4
> 0146fcac 77e41bfa ntdll!NtWaitForMultipleObjects+0xc
> 0146fd54 77d02695 kernel32!WaitForMultipleObjectsEx+0x11a
> 0146fdb0 77d037f0 user32!RealMsgWaitForMultipleObjectsEx+0x13f
> 0146fdcc 00406386 user32!MsgWaitForMultipleObjects+0x1d
> /* calling "MsgWaitForMultipleObjects" for timeout;
>  * timeout 5 seconds */
> ...
>
>    5  Id: 658.798 Suspend: 2 Teb: 7ffd9000 Unfrozen
> ChildEBP RetAddr
> 0156fef4 77d01758 SharedUserData!SystemCallStub+0x4
> 0156fef8 77d070e0 user32!NtUserGetMessage+0xc
> 0156ff1c 004288cb user32!GetMessageA+0x8b
> /* another thread that does createwindow and process messages */
> ...
>
>    6  Id: 658.c5c Suspend: 2 Teb: 7ffd7000 Unfrozen
> ChildEBP RetAddr
> 018ffe20 77f4313f SharedUserData!SystemCallStub+0x4
> 018ffe24 77c52555 ntdll!NtReplyWaitReceivePortEx+0xc
> 018fff8c 77c65159 rpcrt4!LRPC_ADDRESS::ReceiveLotsaCalls+0x193
> 018fff90 77c650a1 rpcrt4!RecvLotsaCallsWrapper+0x9
> 018fffb0 77c65187 rpcrt4!BaseCachedThreadRoutine+0x9c
> 018fffb8 77e4a990 rpcrt4!ThreadStartRoutine+0x17
> 018fffec 00000000 kernel32!BaseThreadStart+0x34
> /* Do not know what is this thread */
>
> Explanation:
> -----------------
> THREAD NUMBER          EXPLANATION
>
> 0                                    Application Main thread (shows
> proper stack)
>
> 1                                    Application thread that waits for
> children
>
> 2                                    Do not know about this thread
>                                       Is hang because of this thread ?
>
> 3                                    Application thread that waits on
> event
>
> 4                                    Application thread that calls
>                                       "MsgWaitForMultipleObjects" for
> some timeout purpose
>
> 5                                    Application thread that creates a
> window and processes
>                                       messages from it.
>
> 6                                    Do not know about this thread
>                                       Is hang because of this thread ?
>
> From the MSDN manual page of "WaitForMultipleObjects":
> ==========================================
>
> DWORD WINAPI WaitForMultipleObjects(
>   __in  DWORD nCount,
>   __in  const HANDLE *lpHandles,
>   __in  BOOL bWaitAll,
>   __in  DWORD dwMilliseconds
> );
>
> ...
>
> "Use caution when calling the wait functions and code that directly or
> indirectly creates windows. If a thread creates any windows, it must
> process messages. Message broadcasts are sent to all windows in the
> system. A thread that uses a wait function with no time-out interval
> may cause the system to become deadlocked. Two examples of code that
> indirectly creates windows are DDE and the CoInitialize function.
> Therefore, if you have a thread that creates windows, use
> MsgWaitForMultipleObjects or MsgWaitForMultipleObjectsEx, rather than
> WaitForMultipleObjects".
>
> -> But all the "WaitForMultipleObjects" and the
> "MsgWaitForMultipleObjects" calls are being made with timeouts
>     and the "bWaitAll" is false.
>
> I am unable to find is hang because of the application threads or the
> other unknown threads.
>
> Can there be some suggestions on how to find the cause of all threads
> being hung and
> what has initiated the hang ?
>
> I have created the process dump from windbg. Using this, can we derive
> some more information about
> hung reason ?
>
> Thanks and Regards,
> Manish Singh.

The following is the operating system details:

Microsoft Windows [Version 5.2.3790]
Host Name: SUN
OS Name: Microsoft(R) Windows(R) Server 2003,
Enterprise Editi
on
OS Version: 5.2.3790 Build 3790
OS Manufacturer: Microsoft Corporation
OS Configuration: Member Server
OS Build Type: Multiprocessor Free
System Up Time: 0 Days, 14 Hours, 46 Minutes, 57 Seconds
System Manufacturer: VMware, Inc.
System Model: VMware Virtual Platform
System Type: X86-based PC
Processor(s): 4 Processor(s) Installed.
[01]: x86 Family 6 Model 7 Stepping 10
GenuineIntel ~
2493 Mhz
[02]: x86 Family 6 Model 7 Stepping 10
GenuineIntel ~
2494 Mhz
[03]: x86 Family 6 Model 7 Stepping 10
GenuineIntel ~
2493 Mhz
[04]: x86 Family 6 Model 7 Stepping 10
GenuineIntel ~
2493 Mhz
BIOS Version: INTEL - 6040000
Windows Directory: C:\WINDOWS
System Directory: C:\WINDOWS\system32

Total Physical Memory: 3,071 MB
Available Physical Memory: 1,841 MB
Page File: Max Size: 7,527 MB
Page File: Available: 4,439 MB
Page File: In Use: 3,088 MB
Page File Location(s): C:\pagefile.sys

Hotfix(s): 3 Hotfix(s) Installed.
[01]: File 1
[02]: Q147222
[03]: KB893803v2 - Update

Thanks and Regards,
Manish Singh.
From: mannu on
On Jul 7, 11:14 am, mannu <manishsingh...(a)gmail.com> wrote:
> On Jul 7, 10:44 am, mannu <manishsingh...(a)gmail.com> wrote:
>
>
>
> > Hello,
>
> > An application has more than 64 child processes.
>
> > To check if any child process exited,
> > one of the application thread calls "WaitForMultipleObjects".
>
> > Since the limit for number of handles that can be
> > supplied to "WaitForMultipleObjects" is 64,
> > a loop that only passes 62 process handles
> > to "WaitForMultipleObjects" in one iteration
> > is present. In the next iteration and so on, the
> > remaining process handles (62 or less at a time)
> > are passed to "WaitForMultipleObjects".
> > The timeout passed to "WaitForMultipleObjects"
> > is 1 second and the bWaitAll is false;
>
> > There are other threads in application
> > that create windows and use "GetMessage",
> > "MsgWaitForMultipleObjects".
> > The calls to "MsgWaitForMultipleObjects" is with timeout.
>
> > All the threads in the application are hung as shown in the below
> > stack trace:
> > --------------------------------------------------------------------------------------------------------------
>
> > 0:000> ~*kP
>
> > .  0  Id: 658.65c Suspend: 2 Teb: 7ffde000 Unfrozen
> > ChildEBP RetAddr
> > 0012f86c 77f4303b SharedUserData!SystemCallStub+0x4
> > 0012f870 77e4905d ntdll!NtReadFile+0xc
> > 0012f8d8 77db51f1 kernel32!ReadFile+0x16c
> > 0012f904 77db5297 advapi32!ScGetPipeInput+0x28
> > 0012f974 77db498b advapi32!ScDispatcherLoop+0x4c
> > 0012fbd4 00440fdb advapi32!StartServiceCtrlDispatcherW+0xe2
> > /* main thread */
> > ...
>
> >    1  Id: 658.6e8 Suspend: 2 Teb: 7ffdd000 Unfrozen
> > ChildEBP RetAddr
> > 00f1fc18 77f4372d SharedUserData!SystemCallStub+0x4
> > 00f1fc1c 77e41bfa ntdll!NtWaitForMultipleObjects+0xc
> > 00f1fcc4 77e4b0e4 kernel32!WaitForMultipleObjectsEx+0x11a
> > 00f1fcdc 00443a33 kernel32!WaitForMultipleObjects+0x17
> > [d:\work\sources\trunk\thirdparty\ace-5.6\ace_wrappers\ace
> > \process_manager.cpp
> > @ 831]
> > 00f1fdb0 0042f89f svagents!ACE_Process_Manager::wait(
> >                         class ACE_Time_Value * timeout =
> > 0x00f1fdc4)+0xe0
> > [d:\work\sources\trunk\thirdparty\ace-5.6\ace_wrappers\ace
> > \process_manager.cpp
> > @ 734]
> > /* thread that is waiting for exit of children ;
> >  * timeout: 1 second */
> > ...
>
> >    2  Id: 658.74c Suspend: 2 Teb: 7ffdc000 Unfrozen
> > ChildEBP RetAddr
> > 0126ff7c 77f430c7 SharedUserData!SystemCallStub+0x4
> > 0126ff80 71b246f7 ntdll!ZwRemoveIoCompletion+0xc
> > 0126ffb8 77e4a990 mswsock!SockAsyncThread+0x67
> > 0126ffec 00000000 kernel32!BaseThreadStart+0x34
> > /* Do not know what is this thread */
>
> >    3  Id: 658.790 Suspend: 2 Teb: 7ffdb000 Unfrozen
> > ChildEBP RetAddr
> > 0136fd60 77f43741 SharedUserData!SystemCallStub+0x4
> > 0136fd64 77e41817 ntdll!ZwWaitForSingleObject+0xc
> > 0136fdd4 77e4168f kernel32!WaitForSingleObjectEx+0xac
> > 0136fde4 00455632 kernel32!WaitForSingleObject+0xf
> > 0136fe2c 00441620 svagents!ACE_OS::event_timedwait(
> >                         void ** event = 0x00851d9c,
> >                         class ACE_Time_Value * timeout = 0x0085aabc,
> >                         int use_absolute_time = 14333664)+0x92
> > [d:\work\sources\trunk\thirdparty\ace-5.6\ace_wrappers\ace
> > \os_ns_thread.cpp @
> > 3052]
> > 0136fe3c 00684e5a svagents!ACE_Event::wait(
> >                         class ACE_Time_Value * abstime = 0x00851d9c,
> >                         int use_absolute_time = 8759996)+0x10
> > [d:\work\sources\trunk\thirdparty\ace-5.6\ace_wrappers\ace\event.cpp @
> > 63]
> > /* waiting on event;
> >  * timeout: 60 seconds */
> > ...
>
> >    4  Id: 658.794 Suspend: 2 Teb: 7ffda000 Unfrozen
> > ChildEBP RetAddr
> > 0146fca8 77f4372d SharedUserData!SystemCallStub+0x4
> > 0146fcac 77e41bfa ntdll!NtWaitForMultipleObjects+0xc
> > 0146fd54 77d02695 kernel32!WaitForMultipleObjectsEx+0x11a
> > 0146fdb0 77d037f0 user32!RealMsgWaitForMultipleObjectsEx+0x13f
> > 0146fdcc 00406386 user32!MsgWaitForMultipleObjects+0x1d
> > /* calling "MsgWaitForMultipleObjects" for timeout;
> >  * timeout 5 seconds */
> > ...
>
> >    5  Id: 658.798 Suspend: 2 Teb: 7ffd9000 Unfrozen
> > ChildEBP RetAddr
> > 0156fef4 77d01758 SharedUserData!SystemCallStub+0x4
> > 0156fef8 77d070e0 user32!NtUserGetMessage+0xc
> > 0156ff1c 004288cb user32!GetMessageA+0x8b
> > /* another thread that does createwindow and process messages */
> > ...
>
> >    6  Id: 658.c5c Suspend: 2 Teb: 7ffd7000 Unfrozen
> > ChildEBP RetAddr
> > 018ffe20 77f4313f SharedUserData!SystemCallStub+0x4
> > 018ffe24 77c52555 ntdll!NtReplyWaitReceivePortEx+0xc
> > 018fff8c 77c65159 rpcrt4!LRPC_ADDRESS::ReceiveLotsaCalls+0x193
> > 018fff90 77c650a1 rpcrt4!RecvLotsaCallsWrapper+0x9
> > 018fffb0 77c65187 rpcrt4!BaseCachedThreadRoutine+0x9c
> > 018fffb8 77e4a990 rpcrt4!ThreadStartRoutine+0x17
> > 018fffec 00000000 kernel32!BaseThreadStart+0x34
> > /* Do not know what is this thread */
>
> > Explanation:
> > -----------------
> > THREAD NUMBER          EXPLANATION
>
> > 0                                    Application Main thread (shows
> > proper stack)
>
> > 1                                    Application thread that waits for
> > children
>
> > 2                                    Do not know about this thread
> >                                       Is hang because of this thread ?
>
> > 3                                    Application thread that waits on
> > event
>
> > 4                                    Application thread that calls
> >                                       "MsgWaitForMultipleObjects" for
> > some timeout purpose
>
> > 5                                    Application thread that creates a
> > window and processes
> >                                       messages from it.
>
> > 6                                    Do not know about this thread
> >                                       Is hang because of this thread ?
>
> > From the MSDN manual page of "WaitForMultipleObjects":
> > ==========================================
>
> > DWORD WINAPI WaitForMultipleObjects(
> >   __in  DWORD nCount,
> >   __in  const HANDLE *lpHandles,
> >   __in  BOOL bWaitAll,
> >   __in  DWORD dwMilliseconds
> > );
>
> > ...
>
> > "Use caution when calling the wait functions and code that directly or
> > indirectly creates windows. If a thread creates any windows, it must
> > process messages. Message broadcasts are sent to all windows in the
> > system. A thread that uses a wait function with no time-out interval
> > may cause the system to become deadlocked. Two examples of code that
> > indirectly creates windows are DDE and the CoInitialize function.
> > Therefore, if you have a thread that creates windows, use
> > MsgWaitForMultipleObjects or MsgWaitForMultipleObjectsEx, rather than
> > WaitForMultipleObjects".
>
> > -> But all the "WaitForMultipleObjects" and the
> > "MsgWaitForMultipleObjects" calls are being made with timeouts
> >     and the "bWaitAll" is false.
>
> > I am unable to find is hang because of the application threads or the
> > other unknown threads.
>
> > Can there be some suggestions on how to find the cause of all threads
> > being hung and
> > what has initiated the hang ?
>
> > I have created the process dump from windbg. Using this, can we derive
> > some more information about
> > hung reason ?
>
> > Thanks and Regards,
> > Manish Singh.
>
> The following is the operating system details:
>
> Microsoft Windows [Version 5.2.3790]
> Host Name:                 SUN
> OS Name:                   Microsoft(R) Windows(R) Server 2003,
> Enterprise Editi
> on
> OS Version:                5.2.3790 Build 3790
> OS Manufacturer:           Microsoft Corporation
> OS Configuration:          Member Server
> OS Build Type:             Multiprocessor Free
> System Up Time:            0 Days, 14 Hours, 46 Minutes, 57 Seconds
> System Manufacturer:       VMware, Inc.
> System Model:              VMware Virtual Platform
> System Type:               X86-based PC
> Processor(s):              4 Processor(s) Installed.
>                            [01]: x86 Family 6 Model 7 Stepping 10
> GenuineIntel ~
> 2493 Mhz
>                            [02]: x86 Family 6 Model 7 Stepping 10
> GenuineIntel ~
> 2494 Mhz
>                            [03]: x86 Family 6 Model 7 Stepping 10
> GenuineIntel ~
> 2493 Mhz
>                            [04]: x86 Family 6 Model 7 Stepping 10
> GenuineIntel ~
> 2493 Mhz
> BIOS Version:              INTEL  - 6040000
> Windows Directory:         C:\WINDOWS
> System Directory:          C:\WINDOWS\system32
>
> Total Physical Memory:     3,071 MB
> Available Physical Memory: 1,841 MB
> Page File: Max Size:       7,527 MB
> Page File: Available:      4,439 MB
> Page File: In Use:         3,088 MB
> Page File Location(s):     C:\pagefile.sys
>
> Hotfix(s):                 3 Hotfix(s) Installed.
>                            [01]: File 1
>                            [02]: Q147222
>                            [03]: KB893803v2 - Update
>
> Thanks and Regards,
> Manish Singh.

Hello,

Any pointers on moving forward to debug this hang :

Thanks and Regards,
Manish Singh.