How to interpret results of !analyze -v -hang

I have an application that hangs every so often.
I am using WinDBG to attempt to find the problem.

Specifically, how can I find out what is the critical section being waited upon?

I did get results for !cs -l and WinDBG does not show any critical sections that are locked.

The result of !analyze -v -hang follows:
0:029> !analyze -v -hang
*******************************************************************************
* *
* Exception Analysis *
* *
*******************************************************************************

*** ERROR: Symbol file could not be found. Defaulted to export symbols for D:\Windows\system32\MSVBVM60.DLL -
*** WARNING: Unable to verify checksum for D:\Program Files (x86)\Software Verification\Memory Validator\svlmemoryvalidatorstub.dll
*** ERROR: Symbol file could not be found. Defaulted to export symbols for D:\Program Files (x86)\Software Verification\Memory Validator\svlmemoryvalidatorstub.dll -
GetPageUrlData failed, server returned HTTP status 404
URL requested: http://watson.microsoft.com/0001000c.htm?Retriage=1

FAULTING_IP:
ntdll!DbgBreakPoint+0
77ad000c cc int 3

EXCEPTION_RECORD: ffffffff – (.exr 0xffffffffffffffff)
ExceptionAddress: 77ad000c (ntdll!DbgBreakPoint)
ExceptionCode: 80000003 (Break instruction exception)
ExceptionFlags: 00000000
NumberParameters: 1
Parameter[0]: 00000000

FAULTING_THREAD: 00000019

BUGCHECK_STR: HANG

PROCESS_NAME: S3DHost.exe

OVERLAPPED_MODULE: Address regions for ‘EquipDropTarget’ and ‘EquipEnvManager409.dll’ overlap

ERROR_CODE: (NTSTATUS) 0xcfffffff -

EXCEPTION_CODE: (NTSTATUS) 0xcfffffff -

EXCEPTION_PARAMETER1: 00000000

MOD_LIST:

NTGLOBALFLAG: 400

APPLICATION_VERIFIER_FLAGS: 0

MANAGED_STACK: !dumpstack -EE
OS Thread Id: 0x1028 (29)
Current frame:
ChildEBP RetAddr Caller,Callee

LOADERLOCK_BLOCKED_API: LdrInitializeThunk:LdrpInitializeThread:

DERIVED_WAIT_CHAIN:

Dl Eid Cid WaitType
– — ------- --------------------------
29 c4c.1028 Speculated (Triage) –>
25 c4c.1390 Critical Section (Self)

WAIT_CHAIN_COMMAND: ~29s;k;;~25s;k;;

BLOCKING_THREAD: 00001390

DEFAULT_BUCKET_ID: APPLICATION_HANG_SELF_Unowned_CriticalSection

PRIMARY_PROBLEM_CLASS: APPLICATION_HANG_SELF_Unowned_CriticalSection

LAST_CONTROL_TRANSFER: from 77af8c44 to 77adf861

STACK_TEXT:
1d4efb94 77af8c44 0000021c 00000000 00000000 ntdll!ZwWaitForSingleObject+0x15
1d4efbf8 77af8b28 00000000 00000000 00000000 ntdll!RtlpWaitOnCriticalSection+0x13e
1d4efc20 77af9ef9 77bc20c0 6e39dde0 ffed6000 ntdll!RtlEnterCriticalSection+0x150
1d4efcb4 77af9c9c 1d4efd24 6e39dc54 00000000 ntdll!LdrpInitializeThread+0xc6
1d4efd00 77af9cc9 1d4efd24 77ac0000 00000000 ntdll!_LdrpInitialize+0x1ad
1d4efd10 00000000 1d4efd24 77ac0000 00000000 ntdll!LdrInitializeThunk+0x10

FOLLOWUP_IP:
ntdll!ZwWaitForSingleObject+15
77adf861 83c404 add esp,4

SYMBOL_STACK_INDEX: 0

SYMBOL_NAME: ntdll!ZwWaitForSingleObject+15

FOLLOWUP_NAME: MachineOwner

MODULE_NAME: ntdll

IMAGE_NAME: ntdll.dll

DEBUG_FLR_IMAGE_TIMESTAMP: 4ba9b29c

STACK_COMMAND: ~25s ; kb

BUCKET_ID: HANG_ntdll!ZwWaitForSingleObject+15

FAILURE_BUCKET_ID: APPLICATION_HANG_SELF_Unowned_CriticalSection_cfffffff_ntdll.dll!ZwWaitForSingleObject

WATSON_STAGEONE_URL: http://watson.microsoft.com/0001000c.htm?Retriage=1

Followup: MachineOwner
---------

Thanks,
Osiris Pedroso

On 09/23/2010 16:08, xxxxx@gmail.com wrote:

I have an application that hangs every so often.
I am using WinDBG to attempt to find the problem.

Specifically, how can I find out what is the critical section being waited upon?

I did get results for !cs -l and WinDBG does not show any critical sections that are locked.

The result of !analyze -v -hang follows:
0:029> !analyze -v -hang
*******************************************************************************
* *
* Exception Analysis *
* *
*******************************************************************************

[…clipped…]

LOADERLOCK_BLOCKED_API: LdrInitializeThunk:LdrpInitializeThread:

DERIVED_WAIT_CHAIN:

Dl Eid Cid WaitType


29 c4c.1028 Speculated (Triage) –>
25 c4c.1390 Critical Section (Self)

WAIT_CHAIN_COMMAND: ~29s;k;;~25s;k;;

BLOCKING_THREAD: 00001390

DEFAULT_BUCKET_ID: APPLICATION_HANG_SELF_Unowned_CriticalSection

PRIMARY_PROBLEM_CLASS: APPLICATION_HANG_SELF_Unowned_CriticalSection

LAST_CONTROL_TRANSFER: from 77af8c44 to 77adf861

STACK_TEXT:
1d4efb94 77af8c44 0000021c 00000000 00000000 ntdll!ZwWaitForSingleObject+0x15
1d4efbf8 77af8b28 00000000 00000000 00000000 ntdll!RtlpWaitOnCriticalSection+0x13e
1d4efc20 77af9ef9 77bc20c0 6e39dde0 ffed6000 ntdll!RtlEnterCriticalSection+0x150
1d4efcb4 77af9c9c 1d4efd24 6e39dc54 00000000 ntdll!LdrpInitializeThread+0xc6
1d4efd00 77af9cc9 1d4efd24 77ac0000 00000000 ntdll!_LdrpInitialize+0x1ad
1d4efd10 00000000 1d4efd24 77ac0000 00000000 ntdll!LdrInitializeThunk+0x10

I’m no expert, but based on this, I’d guess that you’ve got another
thread that is deadlocked in a call to dllmain().

There are some pretty severe restrictions on what you can do in dllmain
(and in c++ at least, this includes file scope and global scope
constructors).

A search on DllMain turns up the following MSDN page:

http://msdn.microsoft.com/en-us/library/ms682583(VS.85).aspx

Check out the remarks section about ‘only simple initialization
or termination tasks’.

Thanks,

Joseph

FOLLOWUP_IP:
ntdll!ZwWaitForSingleObject+15
77adf861 83c404 add esp,4

SYMBOL_STACK_INDEX: 0

SYMBOL_NAME: ntdll!ZwWaitForSingleObject+15

FOLLOWUP_NAME: MachineOwner

MODULE_NAME: ntdll

IMAGE_NAME: ntdll.dll

DEBUG_FLR_IMAGE_TIMESTAMP: 4ba9b29c

STACK_COMMAND: ~25s ; kb

BUCKET_ID: HANG_ntdll!ZwWaitForSingleObject+15

FAILURE_BUCKET_ID: APPLICATION_HANG_SELF_Unowned_CriticalSection_cfffffff_ntdll.dll!ZwWaitForSingleObject

WATSON_STAGEONE_URL: http://watson.microsoft.com/0001000c.htm?Retriage=1

Followup: MachineOwner

Thanks,
Osiris Pedroso


WINDBG is sponsored by OSR

For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at http://www.osronline.com/page.cfm?name=ListServer

What does the stack look like for thread 1028 ? You may have a loader lock hang.

Satya
http://www.winprogger.com