.net Hanging applications. Strange Crash Dump

The production server has a 24x7 application, and sometimes it starts to consume about 50% of the CPU. I could not play it locally, but I dumped the memory with adplus. The server has Windows 2008 Server 64bits, .NET 3.5. The application listens for MSMQ and has a thread pool for operations when I dumped the memory in which nothing was supposed to start, but it was still consuming the processor.

Below is a dump. Do you know what could happen? It is strange that a slow thread also says GC Disabled! What is it?

This is strange. I have an ASP.NET application on the same server, and sometimes the same thing happens.

0:000> !threads ThreadCount: 23 UnstartedThread: 0 BackgroundThread: 6 PendingThread: 0 DeadThread: 5 Hosted Runtime: no PreEmptive Lock ID OSID ThreadOBJ State GC GC Alloc Context Domain Count APT Exception 0 1 1ec0 0000000000249c10 a020 Enabled 0000000000000000:0000000000000000 00000000002410b0 0 MTA 2 2 84c 0000000000253470 b220 Enabled 0000000000000000:0000000000000000 00000000002410b0 0 MTA (Finalizer) 3 3 10b8 0000000019d0f900 80a220 Enabled 0000000000000000:0000000000000000 00000000002410b0 0 MTA (Threadpool Completion Port) 5 4 2184 0000000019d4a550 880b220 Enabled 0000000000000000:0000000000000000 00000000002410b0 0 MTA (Threadpool Completion Port) 6 6 14a0 0000000019d602a0 180b220 Enabled 0000000000000000:0000000000000000 00000000002410b0 0 MTA (Threadpool Worker) 8 7 490 0000000019d7db70 200b020 Enabled 0000000000000000:0000000000000000 00000000002410b0 0 MTA 9 8 2164 0000000019dae680 200b020 Enabled 0000000000000000:0000000000000000 00000000002410b0 0 MTA 10 9 ac0 0000000019db4740 200b020 Enabled 0000000000000000:0000000000000000 00000000002410b0 0 MTA 11 a 24cc 0000000019db51f0 200b020 Enabled 0000000000000000:0000000000000000 00000000002410b0 0 MTA 12 b 1fb4 0000000019db5ca0 200b020 Enabled 0000000000000000:0000000000000000 00000000002410b0 0 MTA 13 c 2408 0000000019db1520 200b020 Enabled 0000000000000000:0000000000000000 00000000002410b0 0 MTA 14 d 1b44 0000000019db1fd0 200b020 Enabled 0000000000000000:0000000000000000 00000000002410b0 0 MTA 15 e 1280 0000000019db2a80 200b020 Enabled 0000000000000000:0000000000000000 00000000002410b0 0 MTA 16 f 206c 0000000019db8780 200b020 Enabled 0000000000000000:0000000000000000 00000000002410b0 0 MTA 17 10 1ff8 0000000019db9230 200b020 Enabled 0000000000000000:0000000000000000 00000000002410b0 0 MTA 18 11 2548 0000000019dc2120 200b020 Enabled 0000000000000000:0000000000000000 00000000002410b0 0 MTA 20 18 2588 0000000019dc49d0 180b220 Enabled 0000000000000000:0000000000000000 00000000002410b0 0 MTA (Threadpool Worker) 21 1a 20a0 0000000019dc5570 b220 Disabled 0000000001653d88:0000000001655978 00000000002410b0 1 MTA XXXX 26 0 0000000019dc89c0 9820 Enabled 0000000000000000:0000000000000000 00000000002410b0 0 Ukn XXXX 2c 0 0000000019dc5b40 9820 Enabled 0000000000000000:0000000000000000 00000000002410b0 0 Ukn XXXX 2b 0 0000000019dc3290 9820 Enabled 0000000000000000:0000000000000000 00000000002410b0 0 Ukn XXXX 5 0 0000000019dc8f90 9820 Enabled 0000000000000000:0000000000000000 00000000002410b0 0 Ukn XXXX 27 0 0000000019dc7850 9820 Enabled 0000000000000000:0000000000000000 00000000002410b0 0 Ukn 0:000> !runaway User Mode Time Thread Time **21:20a0 0 days 0:27:21.718** 6:14a0 0 days 0:00:01.921 18:2548 0 days 0:00:01.015 2:84c 0 days 0:00:00.890 (18 more....) 0:000> ~21s *** WARNING: Unable to verify checksum for System.ni.dll mscorwks!JIT_WriteBarrier_Fast+0x3: 000007fe`f88de5c3 4881fa607f4701 cmp rdx,1477F60h 0:021> !clrstack OS Thread Id: 0x20a0 (21) *** WARNING: Unable to verify checksum for mscorlib.ni.dll Child-SP RetAddr Call Site 000000001b05f090 000007fef651b1ba System.Net.TimerThread+TimerNode..ctor(Callback, System.Object, Int32, System.Object) 000000001b05f0d0 000007fef69a0c3f System.Net.TimerThread+TimerQueue.CreateTimer(Callback, System.Object) 000000001b05f180 000007fef651b73e System.Net.ConnectionPool.CleanupCallbackWrapper(Timer, Int32, System.Object) 000000001b05f1d0 000007fef651b560 System.Net.TimerThread+TimerNode.Fire() 000000001b05f2a0 000007fef64e6388 System.Net.TimerThread+TimerQueue.Fire(Int32 ByRef) 000000001b05f330 000007fef271175b System.Net.TimerThread.ThreadProc() 000000001b05f400 000007fef27a95fd System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object) 000000001b05f450 000007fef88e1552 System.Threading.ThreadHelper.ThreadStart() 0:021> kb RetAddr : Args to Child : Call Site 000007fe`f6a1b87e : 00000000 (Edited) : mscorwks!JIT_WriteBarrier_Fast+0x3 000007fe`f651b1ba : 00000000 (Edited) : System_ni+0x70b87e 000007fe`f69a0c3f : 00000000 (Edited) : System_ni+0x20b1ba 000007fe`f651b73e : 000007fe (Edited) : System_ni+0x690c3f 000007fe`f651b560 : 00000000 (Edited) : System_ni+0x20b73e 000007fe`f64e6388 : 00000000 (Edited) : System_ni+0x20b560 000007fe`f271175b : 00000000 (Edited) : System_ni+0x1d6388 000007fe`f27a95fd : 00000000 (Edited) : mscorlib_ni+0x2f175b 000007fe`f88e1552 : 00000000 (Edited) : mscorlib_ni+0x3895fd 000007fe`f877e5e3 : 00000000 (Edited) : mscorwks!CallDescrWorker+0x82 000007fe`f878c83f : 00000000 (Edited) : mscorwks!CallDescrWorkerWithHandler+0xd3 000007fe`f887ae8d : 00000000 (Edited) : mscorwks!MethodDesc::CallDescr+0x24f 000007fe`f8839374 : 00000000 (Edited) : mscorwks!ThreadNative::KickOffThread_Worker+0x191 000007fe`f8732045 : 00000000 (Edited) : mscorwks!TypeHandle::GetParent+0x5c 000007fe`f8846139 : 00000000 (Edited) : mscorwks!SVR::gc_heap::make_heap_segment+0x155 000007fe`f8700e15 : 00000000 (Edited) : mscorwks!ZapStubPrecode::GetType+0x39 000007fe`f8700ae7 : 00000000 (Edited) : mscorwks!ThreadNative::KickOffThread+0x401 000007fe`f88614fc : 00000002 (Edited) : mscorwks!ThreadNative::KickOffThread+0xd3 00000000`76bdbe3d : 00000000 (Edited) : mscorwks!Thread::intermediateThreadProc+0x78 00000000`76d16a51 : 00000000 (Edited) : kernel32!BaseThreadInitThunk+0xd 
+2
memory crash-dumps
source share
1 answer

I am certainly not an expert here, but some more information that may be useful:

  • According to this , GC threads are created when the CLR starts, at least for the GC server, so it does not have enough threads to start the GC, perhaps not even possible; -)

  • โ€œDisabledโ€ in column โ€œGCโ€ thread 21 simply means that she decided not to be warned of a possible GC operation. This happens when the code in the stream decides that it is doing a critical operation that the GC should not break (for example, loading and building, hence merging).

  • From the output of the โ€œkbโ€ command, I would assume that you are actually using a GC server (stack frame) "! Mscorwks SVR :: gc_heap :: make_heap_segment"; the GC workstation would have something with the WKS class / namespace). This is not unexpected, since it should be the default on the server of the operating system. "You must verify this with the command"! eeversion. "In addition, you should find out how many kernels you have, because if the GC server is running,
    it will use as many threads (one for each logical / physical core).

Maybe the timer shoots quite often or faster than the previous one. You can get an overview of threadpool using the "! ThreadPool" command.

In addition, you can check the actual arguments to the methods and locals (! Clrstack -a) and / or the current objects on the stack (! Dso). Perhaps this may shed some light.

As you might guess, some of the search queries for "System.Net.ConnectionPool.CleanupCallbackWrapper" give the following links, maybe this could be your problem

+2
source share

All Articles