저희가 개발해서 사용하던 프로그램이 일정 시점부터 프로그램 사용중 Hang이 걸려서 먹통이 되는 현상이 발생하였습니다. 
원인은 어떤 프로그램 설치(자산관리 프로그램)후 부터 이런 현상이 발생했는데 해당 프로그램을 제거하면 정상적으로 동작을 합니다. 
해서 프로그램이 먹통이된 시점에 덤프를 뜨서 DebugDialg를 이용해서 확인을 했는데 분석 요약 정보에 다음과 같은 설명이 나왔습니다. 
개발 하면서 Debug은 해봤지만 덤프 파일로 디버깅은 해본적이 없어서 아래 내용으로 어떻게 분석을 시작해야할지 잘 몰라서 질문을 드립니다. 
0번 쓰레드가 블럭되어서 대기중이라는 말로 이해를 했구요. 이 0번 쓰레드는 CallStack을 확인해보면 주 스레드 인걸로 보입니다. 
때문에 0번 스레드가 blocked 된 상태라서 프로그램이 먹통이 된거 같은데 제가 맞게 이해를 한건가요? 
 
The following threads in ERP.DMP are waiting in a WaitOne
( 0 )
4.76% of threads blocked (1 threads)
  
그리고 Top 5 Threads by CPU time에 대한 정보가 다음과 같이 보이구요. 
Note - Times include both user mode and kernel mode for each thread 
Thread ID: 0     Total CPU Time: 00:01:04.708     Entry Point for Thread: IHKorERP+3f4e 
Thread ID: 8     Total CPU Time: 00:00:01.122     Entry Point for Thread: mscorwks!Thread::intermediateThreadProc 
Thread ID: 5     Total CPU Time: 00:00:00.607     Entry Point for Thread: mscorwks!Thread::intermediateThreadProc 
Thread ID: 12     Total CPU Time: 00:00:00.546     Entry Point for Thread: mscorwks!Thread::intermediateThreadProc 
Thread ID: 14     Total CPU Time: 00:00:00.405     Entry Point for Thread: mscorwks!Thread::intermediateThreadProc 
.Net Analysis Report
CLR Information
 CLR version = 2.0.50727.8784
 Microsoft.Diagnostics.Runtime version = 0.9.2.0
.NET Threads Summary
Total Threads: 4 
Running Threads: 0 
Idle Threads: 4 
Max Threads: 1000 
Min Threads: 4 
Debugger_Thread_ID |Managed Thread ID | OS Thread ID |     Thread Object  |  GC Mode  |    Domain | Lock Count |  Apt   |      Exception
        0                  1                     4732          2b8660       Preemptive     2b4120     0           STA          
        2                  2                     5600          2c4300       Preemptive     2b4120     0           MTA         (Finalizer) 
        5                  3                     2936          2ed3d0       Preemptive     2b4120     0           STA          
        7                  5                     3024          9324988      Preemptive     2b4120     0           MTA          
        8                  6                     2408          932f488      Preemptive     2b4120     0           MTA         (Threadpool Worker) 
        11                 9                     2056          93c3288      Preemptive     2b4120     0           MTA          
        12                 10                     4952          93c9888      Preemptive     2b4120     0           MTA         (Threadpool Worker) 
        13                 11                     4284          93ddd10      Preemptive     2b4120     0           MTA         (Threadpool Completion Port) 
                           13                                   93ee380      Preemptive     2b4120     0                       
        14                 8                     5484          9428b50      Preemptive     2b4120     0           MTA         (Threadpool Worker) 
                           12                                   125af2d8     Preemptive     2b4120     0                       
                           7                                   125afaa8     Preemptive     2b4120     0                       
        18                 4                     6084          125af6c0     Preemptive     2b4120     0           MTA         (Threadpool Worker) 
Thread 0 - System ID 4732
Entry point   IHKorERP+3f4e 
Create time   2018-07-09 오전 7:39:14 
Time spent in user mode   0 Days 00:00:37.143 
Time spent in kernel mode   0 Days 00:00:27.565 
This thread is waiting in a WaitOne
.NET Call Stack
[[HelperMethodFrame_1OBJ] (System.Threading.WaitHandle.WaitOneNative)] System.Threading.WaitHandle.WaitOneNative(Microsoft.Win32.SafeHandles.SafeWaitHandle, UInt32, Boolean, Boolean) 
mscorlib_ni!System.Threading.WaitHandle.WaitOne(Int64, Boolean) 
mscorlib_ni!System.Threading.WaitHandle.WaitOne(Int32, Boolean) 
System_Windows_Forms_ni!System.Windows.Forms.Control.WaitForWaitHandle(System.Threading.WaitHandle) 
System_Windows_Forms_ni!System.Windows.Forms.Control.MarshaledInvoke(System.Windows.Forms.Control, System.Delegate, System.Object[], Boolean) 
System_Windows_Forms_ni!System.Windows.Forms.Control.Invoke(System.Delegate, System.Object[]) 
System_Windows_Forms_ni!System.Windows.Forms.WindowsFormsSynchronizationContext.Send(System.Threading.SendOrPostCallback, System.Object) 
System_ni!Microsoft.Win32.SystemEvents+SystemEventInvokeInfo.Invoke(Boolean, System.Object[]) 
System_ni!Microsoft.Win32.SystemEvents.RaiseEvent(Boolean, System.Object, System.Object[]) 
System_ni!Microsoft.Win32.SystemEvents.OnUserPreferenceChanged(Int32, IntPtr, IntPtr) 
System_ni!Microsoft.Win32.SystemEvents.WindowProc(IntPtr, Int32, IntPtr, IntPtr) 
[[InlinedCallFrame]] 
System_Windows_Forms_ni!System.Windows.Forms.Application+ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32, Int32, Int32) 
System_Windows_Forms_ni!System.Windows.Forms.Application+ThreadContext.RunMessageLoopInner(Int32, System.Windows.Forms.ApplicationContext) 
System_Windows_Forms_ni!System.Windows.Forms.Application+ThreadContext.RunMessageLoop(Int32, System.Windows.Forms.ApplicationContext) 
System_Windows_Forms_ni!System.Windows.Forms.Application.Run(System.Windows.Forms.ApplicationContext) 
SiS.Dev.Main.ClientManager.WindowApplicationStart() 
ERPExecute.ERPAppModule.Main(System.String[]) 
[[GCFrame]] 
        
        
                    
                    
                    
                    
                    
    
                    
                    
                    
                    
                    
                
                    [최초 등록일: ]
                    [최종 수정일: 8/8/2018]