首先当然是看主线程的锁的情况
0:155:x86> <strong>~0 kb</strong>
ChildEBP RetAddr Args to Child
0018d274 77858e44 00000fc0 00000000 00000000 ntdll_77820000!ZwWaitForSingleObject+0x15
0018d2d8 77858d28 00000000 00000000 0000006d ntdll_77820000!RtlpWaitOnCriticalSection+0x13e
0018d300 32d6e413 <strong><span style="color:#ff0000;">32ea3c10 </span></strong>32d6e451 3491a72c ntdll_77820000!RtlEnterCriticalSection+0x150
0018d308 32d6e451 3491a72c 32d7114d 3491a748 dhplay!CSFMutex::Lock+0xe [C:\SF_PlaySDK\Src\SF_Platform\SFMutex.cpp @ 70]
0018d310 32d7114d 3491a748 3491a060 32ddd728 dhplay!CSFAutoMutexLock::CSFAutoMutexLock+0x1c [C:\SF_PlaySDK\Src\SF_Platform\SFMutex.cpp @ 106]
0018d338 32d889c7 32e08998 32d81ef2 1fa93bf0 dhplay!CVideoDecode::Close+0x1c [C:\SF_PlaySDK\Src\VideoDecode\VideoDecode.cpp @ 132]
0018d340 32d81ef2 1fa93bf0 1fa93bf0 00000000 dhplay!CPlayGraph::Stop+0x61 [C:\SF_PlaySDK\Src\playgraph.cpp @ 305]
0018d36c 020e2ee7 3491a060 0072875a e66332ad dhplay!PLAY_Stop+0xe8 [C:\SF_PlaySDK\Src\dhplay.cpp @ 203]
0018d374 0072875a e66332ad 0bab1e50 1fa93bf0 VAXPlayer!CVaxPlayer::stop+0x17 [c:\vaxplayer\vaxplayer\src\vaxplayer.cpp @ 156]
0018d3a8 007286e8 0431a284 0072ca5d 00000001 DSSClient!DCM::PlayerAX::~PlayerAX+0x4a [g:\jk_w32\workspace\proj_dss-f-hw-dss-os-branch--win32-vs2005\tmp_build_dir\dcmbase\render\playerax.cpp @ 49]
0018d3b0 0072ca5d 00000001 e66332ed 09fd2f60 DSSClient!DCM::PlayerAX::`scalar deleting destructor'+0x8
0018d3f0 007247ca 0431a118 00000074 00cf9965 DSSClient!DCM::RenderImp::RecyclePlayPort+0xdd [g:\jk_w32\workspace\proj_dss-f-hw-dss-os-branch--win32-vs2005\tmp_build_dir\dcmbase\render\renderimp.cpp @ 294]
0018d3fc 00cf9965 00000074 e6633521 09fd2f60 DSSClient!DCM::Render::RecyclePlayParam+0x1a [g:\jk_w32\workspace\proj_dss-f-hw-dss-os-branch--win32-vs2005\tmp_build_dir\dcmbase\render\render.cpp @ 136]
0018d460 00cfc2b9 00000000 00000001 e6633559 DSSClient!DCM::QRealMonitorWnd::CloseVideoByWnd+0x565 [g:\jk_w32\workspace\proj_dss-f-hw-dss-os-branch--win32-vs2005\tmp_build_dir\dcmui_qt\qplayerwnd\qrealmonitorwnd.cpp @ 1099]
0018d5dc 00ad1c09 224da9d0 00000002 00000001 DSSClient!DCM::QRealMonitorWnd::OpenVideo+0x819 [g:\jk_w32\workspace\proj_dss-f-hw-dss-os-branch--win32-vs2005\tmp_build_dir\dcmui_qt\qplayerwnd\qrealmonitorwnd.cpp @ 728]
0018da4c 00adb407 224da9d0 00000001 00000000 DSSClient!DCM::QRealMonitorCtrl::OnOpenVideo+0x429 [g:\jk_w32\workspace\proj_dss-f-hw-dss-os-branch--win32-vs2005\tmp_build_dir\dcmui_qt\qrealmonitorctrl\qrealmonitorctrl.cpp @ 1570]
0018da7c 670b1559 06984348 0018da54 00000039 DSSClient!DCM::QRealMonitorCtrl::qt_static_metacall+0xa77 [g:\jk_w32\workspace\proj_dss-f-hw-dss-os-branch--win32-vs2005\tmp_build_dir\dcmui_qt\qrealmonitorctrl\generatedfiles\release\moc_qrealmonitorctrl.cpp @ 396]
WARNING: Stack unwind information not available. Following frames may be wrong.
0018dad0 654cf996 00000000 e662a06f 23091e60 QtCore4!QMetaCallEvent::placeMetaCall+0x19
0018daec 0d2f469a 00000030 08c61368 00000000 QtGui4!QWidget::event+0xc56
0018db30 0d31d4da 011f8be0 00000000 00000000 mshtml!Ordinal104+0x5449b
0018db48 0ccb2e52 0ccf6368 011007d4 0018dc18 mshtml!Ordinal104+0x7d2db
0018db70 654e3e01 06984348 23091e60 e662a10b LinkWebDll!CThreadSlotData::GetThreadValue+0x3a [f:\sp\vctools\vc7libs\ship\atlmfc\src\mfc\afxtls.cpp @ 265]
0018dba8 7784e38c 0018de34 655aa2c2 ffffffff QtGui4!QWindowsStyle::eventFilter+0x1c1
0444a9d0 0018fec8 00000000 1eefdf48 00000062 ntdll_77820000!RtlpLowFragHeapAllocFromContext+0xaec
0444a9d4 00000000 1eefdf48 00000062 00000000 0x18fec8
0:155:x86> <strong>!cs 32ea3c10</strong>
-----------------------------------------
Critical section = 0x0000000032ea3c10 (+0x32EA3C10)
DebugInfo = 0x000000002995d5c8
LOCKED
LockCount = 0x1
WaiterWoken = No
OwningThread =<strong><span style="color:#ff0000;"> 0x0000000000000ea0</span></strong>
RecursionCount = 0x1
LockSemaphore = 0xFC0
SpinCount = 0x0000000000000000
查看ea0这个线程在干嘛
0:155:x86> <strong>~~[0x0000000000000ea0]</strong>
.155 Id: b5c.ea0 Suspend: 1 Teb: 7edc3000 Unfrozen
Start: dhplay!frameThread (32d75e4c)
Priority: 0 Priority class: 32 Affinity: f
0:155:x86> <strong>~155 kb</strong>
ChildEBP RetAddr Args to Child
354da888 77858e44 0000115c 00000000 00000000 ntdll_77820000!ZwWaitForSingleObject+0x15
354da8ec 77858d28 00000000 00000000 00000000 ntdll_77820000!RtlpWaitOnCriticalSection+0x13e
354da914 7289c4d8 33dd1420 354daa24 3595d860 ntdll_77820000!RtlEnterCriticalSection+0x150
354da924 7289e112 728f9e50 00000001 7289e291 h264dec!init_pred_ptrs+0x1944
354da930 7289e291 3595d860 362e9020 354daa68 h264dec!init_pred_ptrs+0x357e
354da95c 75417c96 00000000 354da9f4 00000003 h264dec!init_pred_ptrs+0x36fd
354da970 00089678 354da988 00000000 728bf37a KERNELBASE!GetSystemInfoInternal+0xb6
WARNING: Frame IP not in any known module. Following frames may be wrong.
00000000 00000000 00000000 00000000 00000000 0x89678
发现是解码库起来的,而且他似乎也在一个等一个锁。
同样的方法发现线程已经不见了,估计线程已经自行结束了。因为这块都是解码库的代码,扔给下层的人去排查了。