Hi
I am attaching latest analysis.
Please help as I am not able to think further...
I have attached file in .txt, please rename to .mht before viewing
Main Topics
Browse All TopicsHi
We have a website and over a period of time, CPU utilization goes 100% and almost everything is being eaten by DLlhost.exe. I used DebugDiagnostic to anlyse the problem, and found that some objects are not being cleared. I disposed explicitly in the code, still having problems.
Can someone help:
Following is excerpt from Debug Diag:
The COM+ STA ThreadPool may have been depleted prior to the time of the dump in dllhost.exe__P41__PID__373
Thread taking high CPU:
Thread 57 - System ID 6968
Entry point rpcrt4!ThreadStartRoutine
Create time 7/31/2009 4:23:26 PM
Time spent in user mode 0 Days 00:04:53.796
Time spent in kernel mode 0 Days 00:00:40.828
Function Source
ntdll!KiFastSystemCallRet
ntdll!NtWaitForSingleObjec
kernel32!WaitForSingleObje
mscorwks!PEImage::LoadImag
mscorwks!CLREvent::WaitEx+
mscorwks!CLREvent::Wait+17
mscorwks!SVR::gc_heap::wai
mscorwks!SVR::GCHeap::Garb
mscorwks!SVR::gc_heap::try
mscorwks!SVR::gc_heap::all
mscorwks!SVR::GCHeap::Allo
mscorwks!Alloc+60
mscorwks!SlowAllocateStrin
mscorwks!FramedAllocateStr
mscorlib_ni+2a25ca
This Question has been solved and asker verified All Experts Exchange premium technology solutions are available to subscription members.
Experts Exchange has been collecting answers to technology questions since 1996…3 million and counting! If you have a question, chances are we already have your answer.
If you can't find the exact answer you're looking for, ask our exclusive community of 50,000 experts. You’ll get a personalized answer from a trusted professional.
Thousands of free tech tips, tricks, how-to’s and tutorials are available in our peer reviewed articles section. See for yourself how smart our experts are, no login required.
Access the answers to your technology questions today.
30-day free trial. Register in 60 seconds.
Members of the expert community talk about why the experience at Experts Exchange is different than what you will find anywhere else.

Try it out and discover for yourself.
30-day free trial. Register in 60 seconds.
Join the community of experts here and help other tech pros by answering question in your area of expertise. You can earn FREE access to all Experts Exchange's premium features and resources.
Hello,
Can you execute some commands in windbg? WinDbg is a part of "Debugging Tools for Windows" (http://www.microsoft.com/
Run WinDbg.exe, File -> Open Crash Dump (select dllhost.exe__P41__PID__262
lm vm mscorwks
.loadby sos mscorwks
!threads
~9s
kb250
after that, Edit -> Write window text to file. And post saved file here.
I repeat that information from perfomance counters would be useful
Hello,
sorry, I forgot about symbols. If the system in question does not have an Internet connection, you have to copy the dump file on system which does. After that, you have to install "Debugging Tools for Windows" and create directory c:\symbols there. Presumably, debug symbols are present in your system, but I don't know where Debug Diagnostics tool found them. Run WinDbg.exe, File -> Open Crash Dump (select dllhost.exe__P41__PID__262
.sympath srv*c:\symbols*http://msdl
.reload
.loadby sos mscorwks
!threads
Hello,
I think one of the web-requests was slowly handled. Let us check this:
.sympath srv*c:\symbols*http://msdl
.loadby sos mscorwks
~55s
kb250
!clrstack
!dso
Hi Roman2
I see that this command listed 0ee0eac0 055b4ea8 System.Web.HttpUtility+Url
Can this be culprit. I looked at the code and there is a loop around this method:
while(signature.Contains("
{
signature = System.Web.HttpUtility.Url
}
while (parts[0].Contains("%"))
{
parts[0] = System.Web.HttpUtility.Url
}
Might be this is going into infinite loop.
Hello,
you absolutely right. I wrote test project and his execution infinitely loops:
using System;
using System.Collections.Generic
using System.Text;
using System.Web;
namespace UrlDecode
{
class Program
{
static void Main(string[] args)
{
string signature = @"a_osch%~"; // was took from dump
while (signature.Contains("%"))
{
signature = System.Web.HttpUtility.Url
}
}
}
}
Business Accounts
Answer for Membership
by: roman2Posted on 2009-08-01 at 05:43:56ID: 24995073
Hello,
I think one of the reason of high CPU utilization is a frequent garbage collections (GC). Unfortunately, there are not enough information from dump in your question (for example, dumping stack for all threads in the process).
I recommend you to run perfmon and add counters: change the perfomance object to ".NET CLR Memory", then, select the "# Bytes in all heaps", "Gen 0 Collections", "Gen 1 Collections", "Gen 2 Collections", "% Time in GC" counters, then, select your process (dllhost.exe) in the instance box and click Add. While process is running, you'll keep track of counters and pay attention to "% Time in GC" and "# Bytes in all heaps" (what values come out?). If "% Time in GC" is zero and "# Bytes in all heaps" is increasing on and on, GC thread(s) is locked.