I'm getting what I believe is the same issue intermittently on our test/production servers. The issue I encounter is that after an app pool recycle the website is fine but the DevForce WCF service appears unresponsive. Recycle the app pool and it usually recovers. The issue is frequent enough that we've setup WCF monitors on the servers using DevForce which report when the issue occurs.
Today I managed to get my hands on an unresponsive DevForce endpoint, and dumped the app pool process. From a quick look it appears that DevForce initialization is deadlocking in concurrent calls to IdeaBlade.Core.IdeaBladeConfig.Initialize() and IdeaBlade.Core.Composition.CompositionHost.get_Instance(). We're running DevForce 6.1.8 and have been experiencing the issue for a number of versions. A fix would be appreciated.
Here's the full stacks for the deadlocked threads: Thread 11 - System ID 9444 Entry point ntdll!RtlUserThreadStart+1d Create time 17/08/2012 6:58:40 AM Time spent in user mode 0 Days 00:00:00.187 Time spent in kernel mode 0 Days 00:00:00.046
This thread is waiting to enter a .NET Lock which thread 22 is currently holding
.NET Call Stack
Function System.Threading.Monitor.Enter(System.Object) IdeaBlade.Core.Composition.CompositionHost.get_Instance() IdeaBlade.Core.AuthHelper.LoadRuntimeLicense(Boolean, System.Action`2) IdeaBlade.Core.AuthHelper.LoadLicense(System.Action`2) IdeaBlade.Core.IdeaBladeConfig.Initialize() IdeaBlade.EntityModel.RemoteServiceFns.AddSerializationBehavior(System.ServiceModel.Description.ContractDescription) IdeaBlade.EntityModel.Server.EntityServiceHost.AddBehaviors() IdeaBlade.EntityModel.Server.EntityServiceHost.ApplyConfiguration() System.ServiceModel.ServiceHostBase.InitializeDescription(System.ServiceModel.UriSchemeKeyedCollection) System.ServiceModel.ServiceHost..ctor(System.Type, System.Uri[]) IdeaBlade.EntityModel.Server.EntityServiceHostFactory.CreateHostCore(System.Type, System.Uri[]) IdeaBlade.EntityModel.Server.EntityServiceHostFactory.CreateServiceHost(System.Type, System.Uri[]) System.ServiceModel.Activation.ServiceHostFactory.CreateServiceHost(System.String, System.Uri[]) System.ServiceModel.ServiceHostingEnvironment+HostingManager.CreateService(System.String) System.ServiceModel.ServiceHostingEnvironment+HostingManager.ActivateService(System.String) System.ServiceModel.ServiceHostingEnvironment+HostingManager.EnsureServiceAvailable(System.String) System.ServiceModel.ServiceHostingEnvironment.EnsureServiceAvailableFast(System.String) System.ServiceModel.Activation.HostedHttpRequestAsyncResult.HandleRequest() System.ServiceModel.Activation.HostedHttpRequestAsyncResult.BeginRequest() System.ServiceModel.Activation.HostedHttpRequestAsyncResult.OnBeginRequest(System.Object) System.Runtime.IOThreadScheduler+ScheduledOverlapped.IOCallback(UInt32, UInt32, System.Threading.NativeOverlapped*) System.Runtime.Fx+IOCompletionThunk.UnhandledExceptionFrame(UInt32, UInt32, System.Threading.NativeOverlapped*) System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32, UInt32, System.Threading.NativeOverlapped*)
Thread 22 - System ID 1160 Entry point ntdll!RtlUserThreadStart+1d Create time 17/08/2012 6:58:48 AM Time spent in user mode 0 Days 00:00:00.125 Time spent in kernel mode 0 Days 00:00:00.046
This thread is waiting to enter a .NET Lock which thread 11 is currently holding
.NET Call Stack
Function System.Threading.Monitor.Enter(System.Object) IdeaBlade.Core.IdeaBladeConfig.Initialize() IdeaBlade.Core.Composition.PartsCatalog.GetProbeAssemblies() IdeaBlade.Core.Composition.PartsCatalog.LoadCatalog() IdeaBlade.Core.Composition.CompositionHost..ctor() IdeaBlade.Core.Composition.CompositionHost.get_Instance() IdeaBlade.Core.Composition.CompositionContext.GetByName(System.String) IdeaBlade.EntityModel.Server.EntityServer..ctor(System.String, System.String) IdeaBlade.EntityModel.Server.EntityServerHostFactory.CreateServiceHost(System.String, System.Uri[]) System.ServiceModel.ServiceHostingEnvironment+HostingManager.CreateService(System.String) System.ServiceModel.ServiceHostingEnvironment+HostingManager.ActivateService(System.String) System.ServiceModel.ServiceHostingEnvironment+HostingManager.EnsureServiceAvailable(System.String) System.ServiceModel.ServiceHostingEnvironment.EnsureServiceAvailableFast(System.String) System.ServiceModel.Activation.HostedHttpRequestAsyncResult.HandleRequest() System.ServiceModel.Activation.HostedHttpRequestAsyncResult.BeginRequest() System.ServiceModel.Activation.HostedHttpRequestAsyncResult.OnBeginRequest(System.Object) System.Runtime.IOThreadScheduler+ScheduledOverlapped.IOCallback(UInt32, UInt32, System.Threading.NativeOverlapped*) System.Runtime.Fx+IOCompletionThunk.UnhandledExceptionFrame(UInt32, UInt32, System.Threading.NativeOverlapped*) System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32, UInt32, System.Threading.NativeOverlapped*)
|