如何找到 HANG with WinDBG 的原因? (C++)

How can I find the reason of HANG with WinDBG? (C++)

当进程没有响应且不工作时,我使用此命令获得了完整转储。

procdump.exe -ma [PID]

此外,我试图使用 WinDBG 找出此进程显示奇怪行为的原因。但我只是一个 WinDBG 初学者,所以我没有从 FULL 转储文件中得到任何提示。 (实际上我无法理解WinDBG消息)有没有人可以帮我解决这个问题?

这是 !locks 命令的结果。

0:000> !locks

CritSec +218daf0 at 0218daf0
WaiterWoken        No
LockCount          14
RecursionCount     1
OwningThread       1554
EntryCount         0
ContentionCount    e
*** Locked

Scanned 789 critical sections

这个结果说"NO LOCKS",对吧?

这是~*k(所有线程调用堆栈)结果。

0:000> ~*k

.  0  Id: 1ff0.1d74 Suspend: 0 Teb: 7efdd000 Unfrozen
ChildEBP RetAddr  
0015fa08 75bd149d ntdll!ZwWaitForSingleObject+0x15
0015fa74 75f21194 KERNELBASE!WaitForSingleObjectEx+0x98
0015fa8c 75f21148 kernel32!WaitForSingleObjectExImplementation+0x75
0015faa0 100500fe kernel32!WaitForSingleObject+0x12
WARNING: Stack unwind information not available. Following frames may be wrong.
0015fac4 10050edb ACE_5_8_3!ACE_OS::cond_wait+0x3e
00000000 00000000 ACE_5_8_3!ACE_OS::cond_timedwait+0x1b

   1  Id: 1ff0.200c Suspend: 0 Teb: 7efda000 Unfrozen
ChildEBP RetAddr  
0449fdf4 77e02f91 ntdll!NtWaitForMultipleObjects+0x15
0449ff88 75f2336a ntdll!TppWaiterpThread+0x33d
0449ff94 77de9f72 kernel32!BaseThreadInitThunk+0xe
0449ffd4 77de9f45 ntdll!__RtlUserThreadStart+0x70
0449ffec 00000000 ntdll!_RtlUserThreadStart+0x1b

   2  Id: 1ff0.1cbc Suspend: 0 Teb: 7efd7000 Unfrozen
ChildEBP RetAddr  
0477ff5c 750e635c ntdll!ZwRemoveIoCompletion+0x15
0477ff88 75f2336a mswsock!SockAsyncThread+0x83
0477ff94 77de9f72 kernel32!BaseThreadInitThunk+0xe
0477ffd4 77de9f45 ntdll!__RtlUserThreadStart+0x70
0477ffec 00000000 ntdll!_RtlUserThreadStart+0x1b

   3  Id: 1ff0.1c78 Suspend: 0 Teb: 7ef9c000 Unfrozen
ChildEBP RetAddr  
0497fd78 75bd149d ntdll!ZwWaitForSingleObject+0x15
0497fde4 75f21194 KERNELBASE!WaitForSingleObjectEx+0x98
0497fdfc 75f21148 kernel32!WaitForSingleObjectExImplementation+0x75
0497fe10 100500fe kernel32!WaitForSingleObject+0x12
WARNING: Stack unwind information not available. Following frames may be wrong.
0497fe34 10050edb ACE_5_8_3!ACE_OS::cond_wait+0x3e
00000000 00000000 ACE_5_8_3!ACE_OS::cond_timedwait+0x1b

   4  Id: 1ff0.11ac Suspend: 0 Teb: 7ef99000 Unfrozen
ChildEBP RetAddr  
04a7fcf8 75bd149d ntdll!ZwWaitForSingleObject+0x15
04a7fd64 75f21194 KERNELBASE!WaitForSingleObjectEx+0x98
04a7fd7c 75f21148 kernel32!WaitForSingleObjectExImplementation+0x75
04a7fd90 10050f67 kernel32!WaitForSingleObject+0x12
WARNING: Stack unwind information not available. Following frames may be wrong.
04a7fde0 1001cf14 ACE_5_8_3!ACE_OS::cond_timedwait+0xa7
04a7fdfc 0041c4ac ACE_5_8_3!ACE_Condition<ACE_Recursive_Thread_Mutex>::wait+0x44
04a7fee0 10074b5c FatDatabaseCenter!ACE_Thread_Timer_Queue_Adapter<ACE_Timer_Heap_T<ACE_Event_Handler *,ACE_Event_Handler_Handle_Timeout_Upcall<ACE_Recursive_Thread_Mutex>,ACE_Recursive_Thread_Mutex>,ACE_Event_Handler *>::svc+0x16c [d:[=11=].buildserver\jenkins\workspace\c++_server_Fatdatabasecenter_v30\extlib\ace_5_8_3\ace\timer_queue_adapters.cpp @ 275]
04a7ff28 10075097 ACE_5_8_3!ACE_Task_Base::svc_run+0x2c
04a7ff80 73832a47 ACE_5_8_3!ACE_Thread_Adapter::invoke+0x87
04a7ff88 75f2336a msvcr80!_threadstartex+0x66 [f:\dd\vctools\crt_bld\self_x86\crt\src\threadex.c @ 326]
04a7ff94 77de9f72 kernel32!BaseThreadInitThunk+0xe
04a7ffd4 77de9f45 ntdll!__RtlUserThreadStart+0x70
04a7ffec 00000000 ntdll!_RtlUserThreadStart+0x1b

   5  Id: 1ff0.2708 Suspend: 0 Teb: 7ef96000 Unfrozen
ChildEBP RetAddr  
04bbab2c 77de8e44 ntdll!ZwWaitForSingleObject+0x15
04bbab90 77de8d28 ntdll!RtlpWaitOnCriticalSection+0x13e
04bbabb8 004159ea ntdll!RtlEnterCriticalSection+0x150
04bbabc0 004151a4 FatDatabaseCenter!FatLog::FatLogSyncObj_CriticalSection::Enter+0xa [d:\...\syncobj\Fatlogsyncobj_criticalsection.cpp @ 29]
04bbabd8 00414fcc FatDatabaseCenter!FatLog::FatLogStore::write+0x14 [d:[=11=].buildserver\jenkins\workspace\c++_server_Fatdatabasecenter_v30\src\Fatlib\Fatlog\Fatlogstore.cpp @ 101]
04bbebec 004162bf FatDatabaseCenter!FatLog::WriteLog+0x6c [d:\...\src\Fatlib\Fatlog\Fatlog.cpp @ 156]
04bbebfc 10033287 FatDatabaseCenter!FatLog::FatLog_AceLogLinker::log+0x6f [d:\...\src\Fatlib\Fatlog\plugin\ace\Fatlog_aceloglinker.cpp @ 47]
WARNING: Stack unwind information not available. Following frames may be wrong.
00000000 00000000 ACE_5_8_3!ACE_Log_Msg::log+0x67

   6  Id: 1ff0.1b24 Suspend: 0 Teb: 7ef93000 Unfrozen
ChildEBP RetAddr  
04cfab2c 77de8e44 ntdll!ZwWaitForSingleObject+0x15
04cfab90 77de8d28 ntdll!RtlpWaitOnCriticalSection+0x13e
04cfabb8 004159ea ntdll!RtlEnterCriticalSection+0x150
04cfabc0 004151a4 FatDatabaseCenter!FatLog::FatLogSyncObj_CriticalSection::Enter+0xa [d:\...\syncobj\Fatlogsyncobj_criticalsection.cpp @ 29]
04cfabd8 00414fcc FatDatabaseCenter!FatLog::FatLogStore::write+0x14 [d:\...\src\Fatlib\Fatlog\Fatlogstore.cpp @ 101]
04cfebec 004162bf FatDatabaseCenter!FatLog::WriteLog+0x6c [d:\...\src\Fatlib\Fatlog\Fatlog.cpp @ 156]
04cfebfc 10033287 FatDatabaseCenter!FatLog::FatLog_AceLogLinker::log+0x6f [d:\...\src\Fatlib\Fatlog\plugin\ace\Fatlog_aceloglinker.cpp @ 47]
WARNING: Stack unwind information not available. Following frames may be wrong.
00000000 00000000 ACE_5_8_3!ACE_Log_Msg::log+0x67

   7  Id: 1ff0.217c Suspend: 0 Teb: 7ef90000 Unfrozen
ChildEBP RetAddr  
04e3ab2c 77de8e44 ntdll!ZwWaitForSingleObject+0x15
04e3ab90 77de8d28 ntdll!RtlpWaitOnCriticalSection+0x13e
04e3abb8 004159ea ntdll!RtlEnterCriticalSection+0x150
04e3abc0 004151a4 FatDatabaseCenter!FatLog::FatLogSyncObj_CriticalSection::Enter+0xa [d:\...\syncobj\Fatlogsyncobj_criticalsection.cpp @ 29]
04e3abd8 00414fcc FatDatabaseCenter!FatLog::FatLogStore::write+0x14 [d:\...\src\Fatlib\Fatlog\Fatlogstore.cpp @ 101]
04e3ebec 004162bf FatDatabaseCenter!FatLog::WriteLog+0x6c [d:\...\src\Fatlib\Fatlog\Fatlog.cpp @ 156]
04e3ebfc 10033287 FatDatabaseCenter!FatLog::FatLog_AceLogLinker::log+0x6f [d:\...\src\Fatlib\Fatlog\plugin\ace\Fatlog_aceloglinker.cpp @ 47]
WARNING: Stack unwind information not available. Following frames may be wrong.
00000000 00000000 ACE_5_8_3!ACE_Log_Msg::log+0x67

   8  Id: 1ff0.2508 Suspend: 0 Teb: 7ef8d000 Unfrozen
ChildEBP RetAddr  
04f7ab2c 77de8e44 ntdll!ZwWaitForSingleObject+0x15
04f7ab90 77de8d28 ntdll!RtlpWaitOnCriticalSection+0x13e
04f7abb8 004159ea ntdll!RtlEnterCriticalSection+0x150
04f7abc0 004151a4 FatDatabaseCenter!FatLog::FatLogSyncObj_CriticalSection::Enter+0xa [d:\...\syncobj\Fatlogsyncobj_criticalsection.cpp @ 29]
04f7abd8 00414fcc FatDatabaseCenter!FatLog::FatLogStore::write+0x14 [d:\...\src\Fatlib\Fatlog\Fatlogstore.cpp @ 101]
04f7ebec 004162bf FatDatabaseCenter!FatLog::WriteLog+0x6c [d:\...\src\Fatlib\Fatlog\Fatlog.cpp @ 156]
04f7ebfc 10033287 FatDatabaseCenter!FatLog::FatLog_AceLogLinker::log+0x6f [d:\...\src\Fatlib\Fatlog\plugin\ace\Fatlog_aceloglinker.cpp @ 47]
WARNING: Stack unwind information not available. Following frames may be wrong.
00000000 00000000 ACE_5_8_3!ACE_Log_Msg::log+0x67

   9  Id: 1ff0.2780 Suspend: 0 Teb: 7ef8a000 Unfrozen
ChildEBP RetAddr  
050bab2c 77de8e44 ntdll!ZwWaitForSingleObject+0x15
050bab90 77de8d28 ntdll!RtlpWaitOnCriticalSection+0x13e
050babb8 004159ea ntdll!RtlEnterCriticalSection+0x150
050babc0 004151a4 FatDatabaseCenter!FatLog::FatLogSyncObj_CriticalSection::Enter+0xa [d:\...\syncobj\Fatlogsyncobj_criticalsection.cpp @ 29]
050babd8 00414fcc FatDatabaseCenter!FatLog::FatLogStore::write+0x14 [d:\...\src\Fatlib\Fatlog\Fatlogstore.cpp @ 101]
050bebec 004162bf FatDatabaseCenter!FatLog::WriteLog+0x6c [d:\...\src\Fatlib\Fatlog\Fatlog.cpp @ 156]
050bebfc 10033287 FatDatabaseCenter!FatLog::FatLog_AceLogLinker::log+0x6f [d:\...\src\Fatlib\Fatlog\plugin\ace\Fatlog_aceloglinker.cpp @ 47]
WARNING: Stack unwind information not available. Following frames may be wrong.
00000000 00000000 ACE_5_8_3!ACE_Log_Msg::log+0x67

  10  Id: 1ff0.13d0 Suspend: 0 Teb: 7ef87000 Unfrozen
ChildEBP RetAddr  
051fab2c 77de8e44 ntdll!ZwWaitForSingleObject+0x15
051fab90 77de8d28 ntdll!RtlpWaitOnCriticalSection+0x13e
051fabb8 004159ea ntdll!RtlEnterCriticalSection+0x150
051fabc0 004151a4 FatDatabaseCenter!FatLog::FatLogSyncObj_CriticalSection::Enter+0xa [d:\...\syncobj\Fatlogsyncobj_criticalsection.cpp @ 29]
051fabd8 00414fcc FatDatabaseCenter!FatLog::FatLogStore::write+0x14 [d:\...\src\Fatlib\Fatlog\Fatlogstore.cpp @ 101]
051febec 004162bf FatDatabaseCenter!FatLog::WriteLog+0x6c [d:\...\src\Fatlib\Fatlog\Fatlog.cpp @ 156]
051febfc 10033287 FatDatabaseCenter!FatLog::FatLog_AceLogLinker::log+0x6f [d:\...\src\Fatlib\Fatlog\plugin\ace\Fatlog_aceloglinker.cpp @ 47]
WARNING: Stack unwind information not available. Following frames may be wrong.
00000000 00000000 ACE_5_8_3!ACE_Log_Msg::log+0x67

  11  Id: 1ff0.294 Suspend: 0 Teb: 7ef84000 Unfrozen
ChildEBP RetAddr  
0533ab2c 77de8e44 ntdll!ZwWaitForSingleObject+0x15
0533ab90 77de8d28 ntdll!RtlpWaitOnCriticalSection+0x13e
0533abb8 004159ea ntdll!RtlEnterCriticalSection+0x150
0533abc0 004151a4 FatDatabaseCenter!FatLog::FatLogSyncObj_CriticalSection::Enter+0xa [d:\...\syncobj\Fatlogsyncobj_criticalsection.cpp @ 29]
0533abd8 00414fcc FatDatabaseCenter!FatLog::FatLogStore::write+0x14 [d:\...\src\Fatlib\Fatlog\Fatlogstore.cpp @ 101]
0533ebec 004162bf FatDatabaseCenter!FatLog::WriteLog+0x6c [d:\...\src\Fatlib\Fatlog\Fatlog.cpp @ 156]
0533ebfc 10033287 FatDatabaseCenter!FatLog::FatLog_AceLogLinker::log+0x6f [d:\...\src\Fatlib\Fatlog\plugin\ace\Fatlog_aceloglinker.cpp @ 47]
WARNING: Stack unwind information not available. Following frames may be wrong.
00000000 00000000 ACE_5_8_3!ACE_Log_Msg::log+0x67

  12  Id: 1ff0.270c Suspend: 0 Teb: 7ef81000 Unfrozen
ChildEBP RetAddr  
0547ab2c 77de8e44 ntdll!ZwWaitForSingleObject+0x15
0547ab90 77de8d28 ntdll!RtlpWaitOnCriticalSection+0x13e
0547abb8 004159ea ntdll!RtlEnterCriticalSection+0x150
0547abc0 004151a4 FatDatabaseCenter!FatLog::FatLogSyncObj_CriticalSection::Enter+0xa [d:\...\syncobj\Fatlogsyncobj_criticalsection.cpp @ 29]
0547abd8 00414fcc FatDatabaseCenter!FatLog::FatLogStore::write+0x14 [d:\...\src\Fatlib\Fatlog\Fatlogstore.cpp @ 101]
0547ebec 004162bf FatDatabaseCenter!FatLog::WriteLog+0x6c [d:\...\src\Fatlib\Fatlog\Fatlog.cpp @ 156]
0547ebfc 10033287 FatDatabaseCenter!FatLog::FatLog_AceLogLinker::log+0x6f [d:\...\src\Fatlib\Fatlog\plugin\ace\Fatlog_aceloglinker.cpp @ 47]
WARNING: Stack unwind information not available. Following frames may be wrong.
00000000 00000000 ACE_5_8_3!ACE_Log_Msg::log+0x67

  13  Id: 1ff0.1fe4 Suspend: 0 Teb: 7ef7e000 Unfrozen
ChildEBP RetAddr  
055bab2c 77de8e44 ntdll!ZwWaitForSingleObject+0x15
055bab90 77de8d28 ntdll!RtlpWaitOnCriticalSection+0x13e
055babb8 004159ea ntdll!RtlEnterCriticalSection+0x150
055babc0 004151a4 FatDatabaseCenter!FatLog::FatLogSyncObj_CriticalSection::Enter+0xa [d:\...\syncobj\Fatlogsyncobj_criticalsection.cpp @ 29]
055babd8 00414fcc FatDatabaseCenter!FatLog::FatLogStore::write+0x14 [d:\...\src\Fatlib\Fatlog\Fatlogstore.cpp @ 101]
055bebec 004162bf FatDatabaseCenter!FatLog::WriteLog+0x6c [d:\...\src\Fatlib\Fatlog\Fatlog.cpp @ 156]
055bebfc 10033287 FatDatabaseCenter!FatLog::FatLog_AceLogLinker::log+0x6f [d:\...\src\Fatlib\Fatlog\plugin\ace\Fatlog_aceloglinker.cpp @ 47]
WARNING: Stack unwind information not available. Following frames may be wrong.
00000000 00000000 ACE_5_8_3!ACE_Log_Msg::log+0x67

  14  Id: 1ff0.e6c Suspend: 0 Teb: 7ef7b000 Unfrozen
ChildEBP RetAddr  
056fab2c 77de8e44 ntdll!ZwWaitForSingleObject+0x15
056fab90 77de8d28 ntdll!RtlpWaitOnCriticalSection+0x13e
056fabb8 004159ea ntdll!RtlEnterCriticalSection+0x150
056fabc0 004151a4 FatDatabaseCenter!FatLog::FatLogSyncObj_CriticalSection::Enter+0xa [d:\...\syncobj\Fatlogsyncobj_criticalsection.cpp @ 29]
056fabd8 00414fcc FatDatabaseCenter!FatLog::FatLogStore::write+0x14 [d:\...\src\Fatlib\Fatlog\Fatlogstore.cpp @ 101]
056febec 004162bf FatDatabaseCenter!FatLog::WriteLog+0x6c [d:\...\src\Fatlib\Fatlog\Fatlog.cpp @ 156]
056febfc 10033287 FatDatabaseCenter!FatLog::FatLog_AceLogLinker::log+0x6f [d:\...\src\Fatlib\Fatlog\plugin\ace\Fatlog_aceloglinker.cpp @ 47]
WARNING: Stack unwind information not available. Following frames may be wrong.
00000000 00000000 ACE_5_8_3!ACE_Log_Msg::log+0x67

  15  Id: 1ff0.2744 Suspend: 0 Teb: 7ef78000 Unfrozen
ChildEBP RetAddr  
0583ab2c 77de8e44 ntdll!ZwWaitForSingleObject+0x15
0583ab90 77de8d28 ntdll!RtlpWaitOnCriticalSection+0x13e
0583abb8 004159ea ntdll!RtlEnterCriticalSection+0x150
0583abc0 004151a4 FatDatabaseCenter!FatLog::FatLogSyncObj_CriticalSection::Enter+0xa [d:\...\syncobj\Fatlogsyncobj_criticalsection.cpp @ 29]
0583abd8 00414fcc FatDatabaseCenter!FatLog::FatLogStore::write+0x14 [d:\...\src\Fatlib\Fatlog\Fatlogstore.cpp @ 101]
0583ebec 004162bf FatDatabaseCenter!FatLog::WriteLog+0x6c [d:\...\src\Fatlib\Fatlog\Fatlog.cpp @ 156]
0583ebfc 10033287 FatDatabaseCenter!FatLog::FatLog_AceLogLinker::log+0x6f [d:\...\src\Fatlib\Fatlog\plugin\ace\Fatlog_aceloglinker.cpp @ 47]
WARNING: Stack unwind information not available. Following frames may be wrong.
00000000 00000000 ACE_5_8_3!ACE_Log_Msg::log+0x67

  16  Id: 1ff0.1f78 Suspend: 0 Teb: 7ef75000 Unfrozen
ChildEBP RetAddr  
0597ab2c 77de8e44 ntdll!ZwWaitForSingleObject+0x15
0597ab90 77de8d28 ntdll!RtlpWaitOnCriticalSection+0x13e
0597abb8 004159ea ntdll!RtlEnterCriticalSection+0x150
0597abc0 004151a4 FatDatabaseCenter!FatLog::FatLogSyncObj_CriticalSection::Enter+0xa [d:\...\syncobj\Fatlogsyncobj_criticalsection.cpp @ 29]
0597abd8 00414fcc FatDatabaseCenter!FatLog::FatLogStore::write+0x14 [d:\...\src\Fatlib\Fatlog\Fatlogstore.cpp @ 101]
0597ebec 004162bf FatDatabaseCenter!FatLog::WriteLog+0x6c [d:\...\src\Fatlib\Fatlog\Fatlog.cpp @ 156]
0597ebfc 10033287 FatDatabaseCenter!FatLog::FatLog_AceLogLinker::log+0x6f [d:\...\src\Fatlib\Fatlog\plugin\ace\Fatlog_aceloglinker.cpp @ 47]
WARNING: Stack unwind information not available. Following frames may be wrong.
00000000 00000000 ACE_5_8_3!ACE_Log_Msg::log+0x67

  17  Id: 1ff0.48c Suspend: 0 Teb: 7ef72000 Unfrozen
ChildEBP RetAddr  
05abab2c 77de8e44 ntdll!ZwWaitForSingleObject+0x15
05abab90 77de8d28 ntdll!RtlpWaitOnCriticalSection+0x13e
05ababb8 004159ea ntdll!RtlEnterCriticalSection+0x150
05ababc0 004151a4 FatDatabaseCenter!FatLog::FatLogSyncObj_CriticalSection::Enter+0xa [d:\...\syncobj\Fatlogsyncobj_criticalsection.cpp @ 29]
05ababd8 00414fcc FatDatabaseCenter!FatLog::FatLogStore::write+0x14 [d:\...\src\Fatlib\Fatlog\Fatlogstore.cpp @ 101]
05abebec 004162bf FatDatabaseCenter!FatLog::WriteLog+0x6c [d:\...\src\Fatlib\Fatlog\Fatlog.cpp @ 156]
05abebfc 10033287 FatDatabaseCenter!FatLog::FatLog_AceLogLinker::log+0x6f [d:\...\src\Fatlib\Fatlog\plugin\ace\Fatlog_aceloglinker.cpp @ 47]
WARNING: Stack unwind information not available. Following frames may be wrong.
00000000 00000000 ACE_5_8_3!ACE_Log_Msg::log+0x67

  18  Id: 1ff0.225c Suspend: 0 Teb: 7ef6f000 Unfrozen
ChildEBP RetAddr  
05bfab2c 77de8e44 ntdll!ZwWaitForSingleObject+0x15
05bfab90 77de8d28 ntdll!RtlpWaitOnCriticalSection+0x13e
05bfabb8 004159ea ntdll!RtlEnterCriticalSection+0x150
05bfabc0 004151a4 FatDatabaseCenter!FatLog::FatLogSyncObj_CriticalSection::Enter+0xa [d:\...\syncobj\Fatlogsyncobj_criticalsection.cpp @ 29]
05bfabd8 00414fcc FatDatabaseCenter!FatLog::FatLogStore::write+0x14 [d:\...\src\Fatlib\Fatlog\Fatlogstore.cpp @ 101]
05bfebec 004162bf FatDatabaseCenter!FatLog::WriteLog+0x6c [d:\...\src\Fatlib\Fatlog\Fatlog.cpp @ 156]
05bfebfc 10033287 FatDatabaseCenter!FatLog::FatLog_AceLogLinker::log+0x6f [d:\...\src\Fatlib\Fatlog\plugin\ace\Fatlog_aceloglinker.cpp @ 47]
WARNING: Stack unwind information not available. Following frames may be wrong.
00000000 00000000 ACE_5_8_3!ACE_Log_Msg::log+0x67

  19  Id: 1ff0.1554 Suspend: 0 Teb: 7ef6c000 Unfrozen
ChildEBP RetAddr  
05d3b96c 750e6f1f ntdll!ZwWaitForSingleObject+0x15
05d3b9ac 750ee425 mswsock!SockWaitForSingleObject+0x1ba
05d3ba28 76f06f79 mswsock!WSPSend+0x218
05d3ba70 100067a9 ws2_32!send+0x86
WARNING: Stack unwind information not available. Following frames may be wrong.
05d3ba94 1006eb4f ACE_5_8_3!ACE::send_n_i+0x39
05d3baa8 0041690f ACE_5_8_3!ACE_SOCK_Stream::send_n+0x1f
05d3bac4 004151ff FatDatabaseCenter!FatLog::FatLog_NetworkMonitor_Handler_ACE::WriteLog+0x3f [d:\...\src\Fatlib\Fatlog\plugin\ace\Fatlog_networkmonitor_handler_ace.cpp @ 56]
05d3bae4 00414fcc FatDatabaseCenter!FatLog::FatLogStore::write+0x6f [d:\...\src\Fatlib\Fatlog\Fatlogstore.cpp @ 101]
05d3faf8 0042f20f FatDatabaseCen## Heading ##ter!FatLog::WriteLog+0x6c [d:\...\src\Fatlib\Fatlog\Fatlog.cpp @ 156]
05d3fb6c 0042b4ff FatDatabaseCenter!FatSqlSelect::Select+0xef [d:\...\src\Fatdatabasecenter30\service\oracleservice\ver2\sql\select\Fatsqlselect.cpp @ 43]
05d3fc3c 0042d1c9 FatDatabaseCenter!FatOracleService_V2::Select+0x19f [d:\...\src\Fatdatabasecenter30\service\oracleservice\ver2\Fatoracleservice_v2.cpp @ 76]
05d3fc44 0042fd72 FatDatabaseCenter!FatOracleService_V2::ClientMsg+0x39 [d:\...\src\Fatdatabasecenter30\service\oracleservice\ver2\Fatoracleservice_v2.cpp @ 58]
05d3fc58 00430771 FatDatabaseCenter!IFDCClientStream::process+0x32 [d:\...\src\Fatdatabasecenter30\readhandler\iFDCclientstream.cpp @ 62]
05d3fd1c 0043059a FatDatabaseCenter!FDCClientStream_RIJINDAEL::recv_from_Client+0x341 [d:\...\src\Fatdatabasecenter30\readhandler\FDCclientstream_rijindael.cpp @ 136]
05d3fde0 0042fe3c FatDatabaseCenter!FDCClientStream_RIJINDAEL::recv_from_Client+0x16a [d:\...\src\Fatdatabasecenter30\readhandler\FDCclientstream_rijindael.cpp @ 67]
05d3fe04 1007a797 FatDatabaseCenter!FatReadHandler::handle_input+0xac [d:\...\src\Fatdatabasecenter30\readhandler\Fatreadhandler.cpp @ 83]
05d3fe1c 1007a86e ACE_5_8_3!ACE_TP_Reactor::dispatch_socket_event+0x27
00000000 00000000 ACE_5_8_3!ACE_TP_Reactor::handle_socket_events+0xbe

  20  Id: 1ff0.21e4 Suspend: 0 Teb: 7ef69000 Unfrozen
ChildEBP RetAddr  
0627fee0 7362a41c ntdll!NtWaitForMultipleObjects+0x15
0627ff88 75f2336a winmm!timeThread+0x3c
0627ff94 77de9f72 kernel32!BaseThreadInitThunk+0xe
0627ffd4 77de9f45 ntdll!__RtlUserThreadStart+0x70
0627ffec 00000000 ntdll!_RtlUserThreadStart+0x1b

  21  Id: 1ff0.2704 Suspend: 0 Teb: 7ef66000 Unfrozen
ChildEBP RetAddr  
065ffe28 77e03392 ntdll!NtWaitForWorkViaWorkerFactory+0x12
065fff88 75f2336a ntdll!TppWorkerThread+0x216
065fff94 77de9f72 kernel32!BaseThreadInitThunk+0xe
065fffd4 77de9f45 ntdll!__RtlUserThreadStart+0x70
065fffec 00000000 ntdll!_RtlUserThreadStart+0x1b

而且,这是 !analyze -v 命令的结果。

0:000> !analyze -v
*******************************************************************************
*                                                                             *
*                        Exception Analysis                                   *
*                                                                             *
*******************************************************************************


FAULTING_IP: 
+38
00000000 ??              ???

EXCEPTION_RECORD:  ffffffff -- (.exr 0xffffffffffffffff)
ExceptioFatdress: 00000000
   ExceptionCode: 80000003 (Break instruction exception)
  ExceptionFlags: 00000000
NumberParameters: 0

CONTEXT:  00000000 -- (.cxr 0x0;r)
eax=00000000 ebx=00000000 ecx=00000000 edx=00000000 esi=00000398 edi=00000000
eip=77dcf8d1 esp=0015fa08 ebp=0015fa74 iopl=0         nv up ei pl zr na pe nc
cs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00000246
ntdll!ZwWaitForSingleObject+0x15:
77dcf8d1 83c404          add     esp,4

FAULTING_THREAD:  00001d74
DEFAULT_BUCKET_ID:  STATUS_BREAKPOINT
PROCESS_NAME:  FatDatabaseCenter.exe
ERROR_CODE: (NTSTATUS) 0x80000003 - {
EXCEPTION_CODE: (HRESULT) 0x80000003 (2147483651) -                                 .
NTGLOBALFLAG:  0
APPLICATION_VERIFIER_FLAGS:  0
APP:  Fatdatabasecenter.exe
ANALYSIS_VERSION: 6.3.9600.17298 (debuggers(dbg).141024-1500) x86fre
PRIMARY_PROBLEM_CLASS:  STATUS_BREAKPOINT
BUGCHECK_STR:  APPLICATION_FAULT_STATUS_BREAKPOINT
LAST_CONTROL_TRANSFER:  from 75bd149d to 77dcf8d1
STACK_TEXT:  
0015fa08 75bd149d 00000398 00000000 00000000 ntdll!ZwWaitForSingleObject+0x15
0015fa74 75f21194 00000398 ffffffff 00000000 KERNELBASE!WaitForSingleObjectEx+0x98
0015fa8c 75f21148 00000398 ffffffff 00000000 kernel32!WaitForSingleObjectExImplementation+0x75
0015faa0 100500fe 00000398 ffffffff 042d5718 kernel32!WaitForSingleObject+0x12
WARNING: Stack unwind information not available. Following frames may be wrong.
0015fac4 10050edb 042d5718 042d56fc 00000000 ACE_5_8_3!ACE_OS::cond_wait+0x3e
00000000 00000000 00000000 00000000 00000000 ACE_5_8_3!ACE_OS::cond_timedwait+0x1b

STACK_COMMAND:  ~0s; .ecxr ; kb
FOLLOWUP_IP: 
ACE_5_8_3!ACE_OS::cond_wait+3e
100500fe 57              push    edi
SYMBOL_STACK_INDEX:  4
SYMBOL_NAME:  ace_5_8_3!ACE_OS::cond_wait+3e
FOLLOWUP_NAME:  MachineOwner
MODULE_NAME: ACE_5_8_3
IMAGE_NAME:  ACE_5.8.3.dll
DEBUG_FLR_IMAGE_TIMESTAMP:  4f5eea5c
FAILURE_BUCKET_ID:  STATUS_BREAKPOINT_80000003_ACE_5.8.3.dll!ACE_OS::cond_wait
BUCKET_ID:  APPLICATION_FAULT_STATUS_BREAKPOINT_ace_5_8_3!ACE_OS::cond_wait+3e
ANALYSIS_SOURCE:  UM
FAILURE_ID_HASH_STRING:  um:status_breakpoint_80000003_ace_5.8.3.dll!ace_os::cond_wait
FAILURE_ID_HASH:  {3b6cdfb5-4df8-55cb-7886-936eef582ae1}
Followup: MachineOwner
---------

如果您想了解更多信息,请说出一切。 请给我一些提示为什么这个过程挂起!!!

编辑

这是 !analyze -v -hang 命令的结果。

0:000> !analyze -v -hang
*******************************************************************************
*                                                                             *
*                        Exception Analysis                                   *
*                                                                             *
*******************************************************************************


FAULTING_IP: 
+0
00000000 ??              ???

EXCEPTION_RECORD:  ffffffff -- (.exr 0xffffffffffffffff)
ExceptioFADdress: 00000000
   ExceptionCode: 80000003 (Break instruction exception)
  ExceptionFlags: 00000000
NumberParameters: 0

CONTEXT:  00000000 -- (.cxr 0x0;r)
eax=00000000 ebx=00000000 ecx=00000000 edx=00000000 esi=00000398 edi=00000000
eip=77dcf8d1 esp=0015fa08 ebp=0015fa74 iopl=0         nv up ei pl zr na pe nc
cs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00000246
ntdll!ZwWaitForSingleObject+0x15:
77dcf8d1 83c404          add     esp,4

FAULTING_THREAD:  00000013

BUGCHECK_STR:  HANG

PROCESS_NAME:  FADDatabaseCenter.exe

ERROR_CODE: (NTSTATUS) 0xcfffffff - <Unable to get error code text>

EXCEPTION_CODE: (NTSTATUS) 0xcfffffff - <Unable to get error code text>

NTGLOBALFLAG:  0

APPLICATION_VERIFIER_FLAGS:  0

APP:  FADdatabasecenter.exe

ANALYSIS_VERSION: 6.3.9600.17298 (debuggers(dbg).141024-1500) x86fre

DERIVED_WAIT_CHAIN:  

Dl Eid Cid     WaitType
-- --- ------- --------------------------
   0   1ff0.1d74 Speculated (Triage)    -->
   5   1ff0.2708 Event                  -->
   19  1ff0.1554 Event                  

WAIT_CHAIN_COMMAND:  ~0s;k;;~5s;k;;~19s;k;;

BLOCKING_THREAD:  00001554

DEFAULT_BUCKET_ID:  APPLICATION_HANG_BlockedOn_NetworkCall

PRIMARY_PROBLEM_CLASS:  APPLICATION_HANG_BlockedOn_NetworkCall

LAST_CONTROL_TRANSFER:  from 750e6f1f to 77dcf8d1

STACK_TEXT:  
05d3b96c 750e6f1f 000004c8 00000001 05d3b994 ntdll!ZwWaitForSingleObject+0x15
05d3b9ac 750ee425 000004c8 000004d4 00000002 mswsock!SockWaitForSingleObject+0x1ba
05d3ba28 76f06f79 000004d4 05d3ba60 00000001 mswsock!WSPSend+0x218
05d3ba70 100067a9 000004d4 0043d634 00000002 ws2_32!send+0x86
WARNING: Stack unwind information not available. Following frames may be wrong.
05d3ba94 1006eb4f 000004d4 0043d634 00000002 ACE_5_8_3!ACE::send_n_i+0x39
05d3baa8 0041690f 0043d634 00000002 00000000 ACE_5_8_3!ACE_SOCK_Stream::send_n+0x1f
05d3bac4 004151ff 00000020 05d3baf4 04282878 FADDatabaseCenter!FADLog::FADLog_NetworkMonitor_Handler_ACE::WriteLog+0x3f
05d3bae4 00414fcc 00000020 05d3baf4 20202020 FADDatabaseCenter!FADLog::FADLogStore::write+0x6f
05d3faf8 0042f20f 00000020 0043f154 06613050 FADDatabaseCenter!FADLog::WriteLog+0x6c
05d3fb6c 0042b4ff 0439fc40 0438ba68 05d3fbc4 FADDatabaseCenter!FADSqlSelect::Select+0xef
05d3fc3c 0042d1c9 0438ba68 0042fd72 0000000b FADDatabaseCenter!FADOracleService_V2::Select+0x19f
05d3fc44 0042fd72 0000000b 0438ba68 0438ba68 FADDatabaseCenter!FADOracleService_V2::ClientMsg+0x39
05d3fc58 00430771 0438ba68 0000000b 000011f6 FADDatabaseCenter!IFDCClientStream::process+0x32
05d3fd1c 0043059a 0000000b 000011f6 0438ba68 FADDatabaseCenter!FDCClientStream_RIJINDAEL::recv_from_Client+0x341
05d3fde0 0042fe3c 0000f004 00001205 04382e7c FADDatabaseCenter!FDCClientStream_RIJINDAEL::recv_from_Client+0x16a
05d3fe04 1007a797 00000600 05d3fe88 0015fca8 FADDatabaseCenter!FADReadHandler::handle_input+0xac
05d3fe1c 1007a86e 05d3fe34 00000001 0015fca8 ACE_5_8_3!ACE_TP_Reactor::dispatch_socket_event+0x27
00000000 00000000 00000000 00000000 00000000 ACE_5_8_3!ACE_TP_Reactor::handle_socket_events+0xbe

FOLLOWUP_IP: 
ACE_5_8_3!ACE::send_n_i+39
100067a9 83f8ff          cmp     eax,0FFFFFFFFh
SYMBOL_STACK_INDEX:  4
SYMBOL_NAME:  ace_5_8_3!ACE::send_n_i+39
FOLLOWUP_NAME:  MachineOwner
MODULE_NAME: ACE_5_8_3
IMAGE_NAME:  ACE_5.8.3.dll
DEBUG_FLR_IMAGE_TIMESTAMP:  4f5eea5c
STACK_COMMAND:  ~19s ; kb
BUCKET_ID:  HANG_ace_5_8_3!ACE::send_n_i+39
FAILURE_BUCKET_ID:  APPLICATION_HANG_BlockedOn_NetworkCall_cfffffff_ACE_5.8.3.dll!ACE::send_n_i
ANALYSIS_SOURCE:  UM
FAILURE_ID_HASH_STRING:  um:application_hang_blockedon_networkcall_cfffffff_ace_5.8.3.dll!ace::send_n_i
FAILURE_ID_HASH:  {aea64438-3ae6-3ab0-78e9-92b7ba34a6f3}
Followup: MachineOwner

这是!失控的结果。

    0:000> !runaway
 User Mode Time
  Thread       Time
   4:11ac      0 days 0:00:16.972
  18:225c      0 days 0:00:00.514
  17:48c       0 days 0:00:00.436
  14:e6c       0 days 0:00:00.436
   9:2780      0 days 0:00:00.421
   8:2508      0 days 0:00:00.421
   7:217c      0 days 0:00:00.421
  19:1554      0 days 0:00:00.358
  15:2744      0 days 0:00:00.358
   5:2708      0 days 0:00:00.358
  13:1fe4      0 days 0:00:00.327
  10:13d0      0 days 0:00:00.312
   6:1b24      0 days 0:00:00.296
  11:294       0 days 0:00:00.280
  16:1f78      0 days 0:00:00.265
  12:270c      0 days 0:00:00.249
   0:1d74      0 days 0:00:00.109
   2:1cbc      0 days 0:00:00.062
  20:21e4      0 days 0:00:00.015
  21:2704      0 days 0:00:00.000
   3:1c78      0 days 0:00:00.000
   1:200c      0 days 0:00:00.000

由于您有 14 个线程卡在其中(等待 - ZwWaitForSingleObject),似乎是尝试访问共享状态的日志记录逻辑:

04e3ab2c 77de8e44 ntdll!ZwWaitForSingleObject+0x15
04e3ab90 77de8d28 ntdll!RtlpWaitOnCriticalSection+0x13e
04e3abb8 004159ea ntdll!RtlEnterCriticalSection+0x150
04e3abc0 004151a4 FatDatabaseCenter!FatLog::FatLogSyncObj_CriticalSection::Enter+0xa [d:[=10=].buildserver\jenkins\workspace\c++_server_Fatdatabasecenter_v30\src\Fatlib\Fatlog\syncobj\Fatlogsyncobj_criticalsection.cpp @ 29]
04e3abd8 00414fcc FatDatabaseCenter!FatLog::FatLogStore::write+0x14 [d:[=10=].buildserver\jenkins\workspace\c++_server_Fatdatabasecenter_v30\src\Fatlib\Fatlog\Fatlogstore.cpp @ 101]
04e3ebec 004162bf FatDatabaseCenter!FatLog::WriteLog+0x6c [d:[=10=].buildserver\jenkins\workspace\c++_server_Fatdatabasecenter_v30\src\Fatlib\Fatlog\Fatlog.cpp @ 156]
04e3ebfc 10033287 FatDatabaseCenter!FatLog::FatLog_AceLogLinker::log+0x6f [d:[=10=].buildserver\jenkins\workspace\c++_server_Fatdatabasecenter_v30\src\Fatlib\Fatlog\plugin\ace\Fatlog_aceloglinker.cpp @ 47]
WARNING: Stack unwind information not available. Following frames may be wrong.
00000000 00000000 ACE_5_8_3!ACE_Log_Msg::log+0x67

只有一个卡住了(等待 - ZwWaitForSingleObject):

05d3b96c 750e6f1f ntdll!ZwWaitForSingleObject+0x15
05d3b9ac 750ee425 mswsock!SockWaitForSingleObject+0x1ba
05d3ba28 76f06f79 mswsock!WSPSend+0x218
05d3ba70 100067a9 ws2_32!send+0x86
WARNING: Stack unwind information not available. Following frames may be wrong.
05d3ba94 1006eb4f ACE_5_8_3!ACE::send_n_i+0x39
05d3baa8 0041690f ACE_5_8_3!ACE_SOCK_Stream::send_n+0x1f
05d3bac4 004151ff FatDatabaseCenter!FatLog::FatLog_NetworkMonitor_Handler_ACE::WriteLog+0x3f [d:[=11=].buildserver\jenkins\workspace\c++_server_Fatdatabasecenter_v30\src\Fatlib\Fatlog\plugin\ace\Fatlog_networkmonitor_handler_ace.cpp @ 56]
05d3bae4 00414fcc FatDatabaseCenter!FatLog::FatLogStore::write+0x6f [d:[=11=].buildserver\jenkins\workspace\c++_server_Fatdatabasecenter_v30\src\Fatlib\Fatlog\Fatlogstore.cpp @ 101]
05d3faf8 0042f20f FatDatabaseCen## Heading ##ter!FatLog::WriteLog+0x6c [d:[=11=].buildserver\jenkins\workspace\c++_server_Fatdatabasecenter_v30\src\Fatlib\Fatlog\Fatlog.cpp @ 156]
05d3fb6c 0042b4ff FatDatabaseCenter!FatSqlSelect::Select+0xef [d:[=11=].buildserver\jenkins\workspace\c++_server_Fatdatabasecenter_v30\src\Fatdatabasecenter30\service\oracleservice\ver2\sql\select\Fatsqlselect.cpp @ 43]
05d3fc3c 0042d1c9 FatDatabaseCenter!FatOracleService_V2::Select+0x19f [d:[=11=].buildserver\jenkins\workspace\c++_server_Fatdatabasecenter_v30\src\Fatdatabasecenter30\service\oracleservice\ver2\Fatoracleservice_v2.cpp @ 76]
05d3fc44 0042fd72 FatDatabaseCenter!FatOracleService_V2::ClientMsg+0x39 [d:[=11=].buildserver\jenkins\workspace\c++_server_Fatdatabasecenter_v30\src\Fatdatabasecenter30\service\oracleservice\ver2\Fatoracleservice_v2.cpp @ 58]
05d3fc58 00430771 FatDatabaseCenter!IFDCClientStream::process+0x32 [d:[=11=].buildserver\jenkins\workspace\c++_server_Fatdatabasecenter_v30\src\Fatdatabasecenter30\readhandler\iFDCclientstream.cpp @ 62]
05d3fd1c 0043059a FatDatabaseCenter!FDCClientStream_RIJINDAEL::recv_from_Client+0x341 [d:[=11=].buildserver\jenkins\workspace\c++_server_Fatdatabasecenter_v30\src\Fatdatabasecenter30\readhandler\FDCclientstream_rijindael.cpp @ 136]
05d3fde0 0042fe3c FatDatabaseCenter!FDCClientStream_RIJINDAEL::recv_from_Client+0x16a [d:[=11=].buildserver\jenkins\workspace\c++_server_Fatdatabasecenter_v30\src\Fatdatabasecenter30\readhandler\FDCclientstream_rijindael.cpp @ 67]
05d3fe04 1007a797 FatDatabaseCenter!FatReadHandler::handle_input+0xac [d:[=11=].buildserver\jenkins\workspace\c++_server_Fatdatabasecenter_v30\src\Fatdatabasecenter30\readhandler\Fatreadhandler.cpp @ 83]
05d3fe1c 1007a86e ACE_5_8_3!ACE_TP_Reactor::dispatch_socket_event+0x27
00000000 00000000 ACE_5_8_3!ACE_TP_Reactor::handle_socket_events+0xbe

我的猜测是第二个调用堆栈使其他 14 个陷入僵局,反之亦然。您需要查看它们中的任何地方是否采用相反的锁,以便获得锁 A 的线程不会等待另一个正在等待锁 A 的线程持有的锁 B。

也可能是其中一个网络 IO 线程使其他线程陷入死锁,特别是唯一等待事件的线程(所有 其他调用堆栈卡在等待单个或等待多个对象函数之一中):

0477ff5c 750e635c ntdll!ZwRemoveIoCompletion+0x15
0477ff88 75f2336a mswsock!SockAsyncThread+0x83
0477ff94 77de9f72 kernel32!BaseThreadInitThunk+0xe
0477ffd4 77de9f45 ntdll!__RtlUserThreadStart+0x70
0477ffec 00000000 ntdll!_RtlUserThreadStart+0x1b

但这并不是 运行 你的代码,所以我真的不知道。