0

I'm debugging a hang issue with one of our apps via a dump analysis in DebugDiag. The long running (1-2 hrs), .Net console app, not consistently, will get to a state where it appears to be doing nothing but doesn't exit (i.e. hangs). There are plenty of resources on the VM it is running on and it never consumes more than 1/4th of the available mem. The analysis details what the threads are waiting on as such:

The following threads in "SomeApp.exe_Manual Dump.dmp" are waiting for .net garbage collection to finish. Thread 20 triggered the garbage collection.
( 11 13 16 17 18 19 22 24 25 26 27 )
30.56% of threads blocked (11 threads)

and the second group of threads like so:

The following threads in "SomeApp.exe_Manual Dump.dmp" are waiting in System.Threading.Monitor.Wait
( 0 14 28 29 30 31 )
16.67% of threads blocked (6 threads)

My question for this post is if this is indicating that the Garbage Collector (GC) is blocked or if there might be another issue? Important to note that the process seems to hang indefinitely, sometimes for hours before we notice and kill/restart it. If the GC is blocked, how would i determine using the dmp why and on what object? I have checked the code and there is no finalize in any of the objects, which i know could be a source. Maybe also helpful, in the ".NET Threads Summary" section of DebugDiag, there is only 1 thread that has a non-zero (1) "Lock Count".

Any thoughts or advice on this is greatly appreciated.

Thanks in advance!

jd314159
  • 365
  • 2
  • 14

0 Answers0