Tuesday, July 14, 2015

Hang Analysis

SRV*c:\temp*http://msdl.microsoft.com/download/symbols
SRV*http://msdl.microsoft.com/download/symbols
.cordll


!ntsdexts.locks= !locks
 kb (Display Stack Backtrace) command
 ~
~4 kb
~6 kb

Example:
0:006>  !locks -v
CritSec ftpsvc2!g_csServiceEntryLock+0 at 6833dd68
LockCount          0 (Ignore)
 
CritSec isatq!AtqActiveContextList+a8 at 68629100
LockCount          2 (possible deadlock)
OwningThread       a3
 
critSec +24e750 at 24e750
LockCount          6
OwningThread       a9

 ~ 
   ....
   4  Id: 1364.a3 Suspend: 1 Teb: 7ffdb000 Unfrozen
   ...
   6  Id: 1364.a9 Suspend: 1 Teb: 7ffd9000 Unfrozen

0:006>  ~4 kb 
  4  id: 97.a3   Suspend: 0 Teb 7ffd9000 Unfrozen
ChildEBP RetAddr  Args to Child
014cfe64 77f6cc7b 00000460 00000000 00000000 ntdll!NtWaitForSingleObject+0xb
014cfed8 77f67456 0024e750 6833adb8 0024e750 ntdll!RtlpWaitForCriticalSection+0xaa  (1st under Args to Child to wait for 6=a9)

0:006>  ~6 kb 
ChildEBP RetAddr  Args to Child
0155fe38 77f6cc7b 00000414 00000000 00000000 ntdll!NtWaitForSingleObject+0xb
0155feac 77f67456 68629100 6862142e 68629100 ntdll!RtlpWaitForCriticalSection+0xaa (68629100=2 thread, wait for 2=a3)

Dead lock found.

https://msdn.microsoft.com/en-us/library/windows/hardware/ff540592(v=vs.85).aspx




!threads 
!clrstack 
~e!clrstack 
!syncblk 
!dso

loadby sos clr
~*e !clrstack
~21s
!dso
!do [hex]

~*kb
!threads


https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=What+cause+WPF+GUI+Hang

https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=what+cause+GUI+Hang+in+WPF

.symbolpath
.symbolpath+ c:\temp
.symfix
vertarget
|
.hh
.chain   ( shows psscor4.dll not loaded as extension so .load psscor4.dll)
!clrstack  ( clr=net 4.0 )
.psscor4.help
.peb
!runaway ( for devi Monday report)

!= extesion sos psscor

Hang
~2s;k
~*k
~*e!clrstack
!syncblk
!finalizequeue  (Ready for finalizer >>10000 => blocked)
k kb kn kp kv  ( show arg to child-- deadlock )
!cs ( find cs owner 10a8 => id 0)
~~[10a8]s
kv r   ( list address on stack, register)
!cs @rbx  ( dump critical section object rbx=... from register)


Exception
!dae
!pe
!u
u;!u  native , managed
!eeversion

Memory
!address  (Free 1G but largest contiquous is 50M => Fragmentation memory problem)
!eeheap-gc !eeheap-loader
!dda
!dumpdomain
!dumpheap-stat
!clrusage

Dump source psudo code
!clrstack  (=> will show Marble.exe BadFuncion() as point of intersts)
!savemodule Marble.exe


http://theartofdev.com/windbg-cheat-sheet/

dt RTL_CRITICAL_SECTION
critsec 0x7e459
!analyze -v -hang

.foreach (ex {!dumpheap -type Exception -short}){.echo "********************************";!pe -nested ${ex} }

!dumpheap -type Exception -short
.loadby C:\Windows\Microsoft.NET\Framework64\v4.0.30319\sos.dll clr
.load C:\Windows\Microsoft.NET\Framework64\v4.0.30319\sos.dll

No comments: