DryIoc: Stackoverflow exception

Hi,

I have been investigating an issue where w3wp.exe process crashes under heavy load. I was finally able to get memory dump of crashing process and it seems to come from DryIoc.

image

Here are details of Thread 51.

Thread 51 - System ID 7224
Entry point   clr!Thread::intermediateThreadProc 
Create time   6/12/2019 8:24:29 PM 
Time spent in user mode   0 Days 00:00:00.250 
Time spent in kernel mode   0 Days 00:00:00.031 

This thread is not fully resolved and may or may not be a problem. Further analysis of these threads may be required.
The thread has evidence of .net exceptions on the stack. Check the Previous .NET Exceptions Report (Exceptions in all .NET Thread Stacks) to view more details of the associated exception  

.Net Call Stack

[[PrestubMethodFrame] (.)] DynamicClass.(ArrayClosure) 
DryIoc.Scope.TryGetOrAdd(ImTools.ImMap`1, Int32, DryIoc.CreateScopedValue, Int32)+f8 
DryIoc.Scope.GetOrAdd(Int32, DryIoc.CreateScopedValue, Int32)+67 
DynamicClass.(ArrayClosure)+d3e46 
DryIoc.Scope.TryGetOrAdd(ImTools.ImMap`1, Int32, DryIoc.CreateScopedValue, Int32)+f8 
DryIoc.Scope.GetOrAdd(Int32, DryIoc.CreateScopedValue, Int32)+67 
DynamicClass.(ArrayClosure, DryIoc.IResolverContext)+13af1 
DryIoc.Container.DryIoc.IResolver.Resolve(System.Type, System.Object, DryIoc.IfUnresolved, System.Type, DryIoc.Request, System.Object[])+37a 
DryIoc.Container.ResolveAndCacheFactoryDelegate(System.Type, DryIoc.IfUnresolved)+140 
Severa.Rest.API.DryIocControllerActivator.Create(System.Net.Http.HttpRequestMessage, System.Web.Http.Controllers.HttpControllerDescriptor, System.Type)+52 
System.Web.Http.Dispatcher.HttpControllerDispatcher+d__15.MoveNext()+12d 
System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.__Canon, mscorlib]].Start[[System.Web.Http.Dispatcher.HttpControllerDispatcher+d__15, System.Web.Http]](d__15 ByRef)+7a 
System.Web.Http.Dispatcher.HttpControllerDispatcher.SendAsync(System.Net.Http.HttpRequestMessage, System.Threading.CancellationToken)+83 
System.Net.Http.HttpMessageInvoker.SendAsync(System.Net.Http.HttpRequestMessage, System.Threading.CancellationToken)+64 
System.Web.Http.Dispatcher.HttpRoutingDispatcher.SendAsync(System.Net.Http.HttpRequestMessage, System.Threading.CancellationToken)+257 
System.Net.Http.DelegatingHandler.SendAsync(System.Net.Http.HttpRequestMessage, System.Threading.CancellationToken)+31 
DryIoc.WebApi.RegisterRequestMessageHandler.SendAsync(System.Net.Http.HttpRequestMessage, System.Threading.CancellationToken)+29 
System.Net.Http.DelegatingHandler.SendAsync(System.Net.Http.HttpRequestMessage, System.Threading.CancellationToken)+31 
System.Web.Http.HttpServer+d__24.MoveNext()+1a0 
System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.__Canon, mscorlib]].Start[[System.Web.Http.HttpServer+d__24, System.Web.Http]](d__24 ByRef)+7a 
System.Web.Http.HttpServer.SendAsync(System.Net.Http.HttpRequestMessage, System.Threading.CancellationToken)+83 
System.Net.Http.HttpMessageInvoker.SendAsync(System.Net.Http.HttpRequestMessage, System.Threading.CancellationToken)+64 
System.Web.Http.Owin.HttpMessageHandlerAdapter+d__20.MoveNext()+25a 
System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[[System.Web.Http.Owin.HttpMessageHandlerAdapter+d__20, System.Web.Http.Owin]](d__20 ByRef)+80 
System.Web.Http.Owin.HttpMessageHandlerAdapter.InvokeCore(Microsoft.Owin.IOwinContext, Microsoft.Owin.IOwinRequest, Microsoft.Owin.IOwinResponse)+7b 
Microsoft.Owin.Security.Infrastructure.AuthenticationMiddleware`1+d__5[[System.__Canon, mscorlib]].MoveNext()+229 
System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[[Microsoft.Owin.Security.Infrastructure.AuthenticationMiddleware`1+d__5[[System.__Canon, mscorlib]], Microsoft.Owin.Security]](d__5 ByRef)+a4 
Microsoft.Owin.Security.Infrastructure.AuthenticationMiddleware`1[[System.__Canon, mscorlib]].Invoke(Microsoft.Owin.IOwinContext)+9e 
Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.IntegratedPipelineContextStage+d__7.MoveNext()+3d 
System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[[Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.IntegratedPipelineContextStage+d__7, Microsoft.Owin.Host.SystemWeb]](d__7 ByRef)+80 
Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.IntegratedPipelineContextStage.RunApp(System.Func`2,System.Threading.Tasks.Task>, System.Collections.Generic.IDictionary`2, System.Threading.Tasks.TaskCompletionSource`1, Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.StageAsyncResult)+80 
Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.IntegratedPipelineContextStage.BeginEvent(System.Object, System.EventArgs, System.AsyncCallback, System.Object)+27a 
System.Web.HttpApplication+AsyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()+182 
System.Web.HttpApplication+<>c__DisplayClass285_0.b__0()+25 
System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep)+9b 
System.Web.HttpApplication.ExecuteStep(IExecutionStep, Boolean ByRef)+83 
System.Web.HttpApplication+PipelineStepManager.ResumeSteps(System.Exception)+74d 
System.Web.HttpApplication.BeginProcessRequestNotification(System.Web.HttpContext, System.AsyncCallback)+83 
System.Web.HttpRuntime.ProcessRequestNotificationPrivate(System.Web.Hosting.IIS7WorkerRequest, System.Web.HttpContext)+1e2 
System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper(IntPtr, IntPtr, IntPtr, Int32)+441 
System.Web.Hosting.PipelineRuntime.ProcessRequestNotification(IntPtr, IntPtr, IntPtr, Int32)+13 
DomainNeutralILStubClass.IL_STUB_ReversePInvoke(Int64, Int64, Int64, Int32)+52 
DomainNeutralILStubClass.IL_STUB_PInvoke(IntPtr, System.Web.RequestNotificationStatus ByRef)+7e 
[[InlinedCallFrame] (System.Web.Hosting.UnsafeIISMethods.MgdIndicateCompletion)] System.Web.Hosting.UnsafeIISMethods.MgdIndicateCompletion(IntPtr, System.Web.RequestNotificationStatusByRef) 
System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper(IntPtr, IntPtr, IntPtr, Int32)+504 
System.Web.Hosting.PipelineRuntime.ProcessRequestNotification(IntPtr, IntPtr, IntPtr, Int32)+13 
DomainNeutralILStubClass.IL_STUB_ReversePInvoke(Int64, Int64, Int64, Int32)+52 
[[ContextTransitionFrame]] 

Full Call Stack

clr!ExecutionManager::GetCodeMethodDesc+17    
clr!MethodTable::GetMethodDescForSlot+aa    
clr!MethodDesc::FindOrCreateAssociatedMethodDesc+14f    
clr!CEEInfo::getCallInfo+23dd    
clrjit!Compiler::impImportBlockCode+4116 [f:\dd\ndp\clr\src\jit\importer.cpp @ 13107]   f:\dd\ndp\clr\src\jit\importer.cpp @ 13107 
clrjit!Compiler::impImportBlock+7d [f:\dd\ndp\clr\src\jit\importer.cpp @ 16079]   f:\dd\ndp\clr\src\jit\importer.cpp @ 16079 
clrjit!Compiler::impImport+2f7 [f:\dd\ndp\clr\src\jit\importer.cpp @ 17163]   f:\dd\ndp\clr\src\jit\importer.cpp @ 17163 
clrjit!Compiler::compCompile+99 [f:\dd\ndp\clr\src\jit\compiler.cpp @ 4386 + c]   f:\dd\ndp\clr\src\jit\compiler.cpp @ 4386 + c 
clrjit!Compiler::compCompileHelper+2a7 [f:\dd\ndp\clr\src\jit\compiler.cpp @ 6025]   f:\dd\ndp\clr\src\jit\compiler.cpp @ 6025 
clrjit!Compiler::compCompile+24b [f:\dd\ndp\clr\src\jit\compiler.cpp @ 5359 + 1a]   f:\dd\ndp\clr\src\jit\compiler.cpp @ 5359 + 1a 
clrjit!jitNativeCode+26a [f:\dd\ndp\clr\src\jit\compiler.cpp @ 6666 + 50]   f:\dd\ndp\clr\src\jit\compiler.cpp @ 6666 + 50 
clrjit!<lambda_1e1cefc294d1d43a093c8e94a2fac4f7>::<helper_func_cdecl>+fc [f:\dd\ndp\clr\src\jit\flowgraph.cpp @ 22434]   f:\dd\ndp\clr\src\jit\flowgraph.cpp @ 22434 
clr!CEEInfo::runWithErrorTrap+47    
clrjit!Compiler::fgInvokeInlineeCompiler+165 [f:\dd\ndp\clr\src\jit\flowgraph.cpp @ 22448]   f:\dd\ndp\clr\src\jit\flowgraph.cpp @ 22448 
clrjit!Compiler::fgMorphCallInlineHelper+a9 [f:\dd\ndp\clr\src\jit\morph.cpp @ 7102]   f:\dd\ndp\clr\src\jit\morph.cpp @ 7102 
clrjit!Compiler::fgInline+1ae [f:\dd\ndp\clr\src\jit\flowgraph.cpp @ 21827 + 10]   f:\dd\ndp\clr\src\jit\flowgraph.cpp @ 21827 + 10 
clrjit!Compiler::fgMorph+85 [f:\dd\ndp\clr\src\jit\morph.cpp @ 18063]   f:\dd\ndp\clr\src\jit\morph.cpp @ 18063 
clrjit!Compiler::compCompile+1cb [f:\dd\ndp\clr\src\jit\compiler.cpp @ 4480]   f:\dd\ndp\clr\src\jit\compiler.cpp @ 4480 
clrjit!Compiler::compCompileHelper+2a7 [f:\dd\ndp\clr\src\jit\compiler.cpp @ 6025]   f:\dd\ndp\clr\src\jit\compiler.cpp @ 6025 
clrjit!Compiler::compCompile+24b [f:\dd\ndp\clr\src\jit\compiler.cpp @ 5359 + 1a]   f:\dd\ndp\clr\src\jit\compiler.cpp @ 5359 + 1a 
clrjit!jitNativeCode+26a [f:\dd\ndp\clr\src\jit\compiler.cpp @ 6666 + 50]   f:\dd\ndp\clr\src\jit\compiler.cpp @ 6666 + 50 
clrjit!CILJit::compileMethod+a2 [f:\dd\ndp\clr\src\jit\ee_il_dll.cpp @ 315]   f:\dd\ndp\clr\src\jit\ee_il_dll.cpp @ 315 
clr!invokeCompileMethodHelper+ce    
clr!invokeCompileMethod+97    
clr!CallCompileMethodWithSEHWrapper+52    
clr!UnsafeJitFunction+7ea    
clr!MethodDesc::MakeJitWorker+498    
clr!MethodDesc::DoPrestub+94c    
clr!PreStubWorker+3cc    
clr!ThePreStub+55    
DryIoc.Scope.TryGetOrAdd(ImTools.ImMap`1<System.Object>, Int32, DryIoc.CreateScopedValue, Int32)+f8    
DryIoc.Scope.GetOrAdd(Int32, DryIoc.CreateScopedValue, Int32)+67    
DynamicClass.(ArrayClosure)+d3e46    
DryIoc.Scope.TryGetOrAdd(ImTools.ImMap`1<System.Object>, Int32, DryIoc.CreateScopedValue, Int32)+f8    
DryIoc.Scope.GetOrAdd(Int32, DryIoc.CreateScopedValue, Int32)+67    
DynamicClass.(ArrayClosure, DryIoc.IResolverContext)+13af1    
DryIoc.Container.DryIoc.IResolver.Resolve(System.Type, System.Object, DryIoc.IfUnresolved, System.Type, DryIoc.Request, System.Object[])+37a    
DryIoc.Container.ResolveAndCacheFactoryDelegate(System.Type, DryIoc.IfUnresolved)+140    
Severa.Rest.API.DryIocControllerActivator.Create(System.Net.Http.HttpRequestMessage, System.Web.Http.Controllers.HttpControllerDescriptor, System.Type)+52    
System.Web.Http.Dispatcher.HttpControllerDispatcher+<SendAsync>d__15.MoveNext()+12d    
System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.__Canon, mscorlib]].Start[[System.Web.Http.Dispatcher.HttpControllerDispatcher+<SendAsync>d__15, System.Web.Http]](<SendAsync>d__15 ByRef)+7a    
System.Web.Http.Dispatcher.HttpControllerDispatcher.SendAsync(System.Net.Http.HttpRequestMessage, System.Threading.CancellationToken)+83    
System.Net.Http.HttpMessageInvoker.SendAsync(System.Net.Http.HttpRequestMessage, System.Threading.CancellationToken)+64    
System.Web.Http.Dispatcher.HttpRoutingDispatcher.SendAsync(System.Net.Http.HttpRequestMessage, System.Threading.CancellationToken)+257    
System.Net.Http.DelegatingHandler.SendAsync(System.Net.Http.HttpRequestMessage, System.Threading.CancellationToken)+31    
DryIoc.WebApi.RegisterRequestMessageHandler.SendAsync(System.Net.Http.HttpRequestMessage, System.Threading.CancellationToken)+29    
System.Net.Http.DelegatingHandler.SendAsync(System.Net.Http.HttpRequestMessage, System.Threading.CancellationToken)+31    
System.Web.Http.HttpServer+<SendAsync>d__24.MoveNext()+1a0    
System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.__Canon, mscorlib]].Start[[System.Web.Http.HttpServer+<SendAsync>d__24, System.Web.Http]](<SendAsync>d__24 ByRef)+7a    
System.Web.Http.HttpServer.SendAsync(System.Net.Http.HttpRequestMessage, System.Threading.CancellationToken)+83    
System.Net.Http.HttpMessageInvoker.SendAsync(System.Net.Http.HttpRequestMessage, System.Threading.CancellationToken)+64    
System.Web.Http.Owin.HttpMessageHandlerAdapter+<InvokeCore>d__20.MoveNext()+25a    
System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[[System.Web.Http.Owin.HttpMessageHandlerAdapter+<InvokeCore>d__20, System.Web.Http.Owin]](<InvokeCore>d__20 ByRef)+80    
System.Web.Http.Owin.HttpMessageHandlerAdapter.InvokeCore(Microsoft.Owin.IOwinContext, Microsoft.Owin.IOwinRequest, Microsoft.Owin.IOwinResponse)+7b    
Microsoft.Owin.Security.Infrastructure.AuthenticationMiddleware`1+<Invoke>d__5[[System.__Canon, mscorlib]].MoveNext()+229    
System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[[Microsoft.Owin.Security.Infrastructure.AuthenticationMiddleware`1+<Invoke>d__5[[System.__Canon, mscorlib]], Microsoft.Owin.Security]](<Invoke>d__5<System.__Canon> ByRef)+a4    
Microsoft.Owin.Security.Infrastructure.AuthenticationMiddleware`1[[System.__Canon, mscorlib]].Invoke(Microsoft.Owin.IOwinContext)+9e    
Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.IntegratedPipelineContextStage+<RunApp>d__7.MoveNext()+3d    
System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[[Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.IntegratedPipelineContextStage+<RunApp>d__7, Microsoft.Owin.Host.SystemWeb]](<RunApp>d__7 ByRef)+80    
Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.IntegratedPipelineContextStage.RunApp(System.Func`2<System.Collections.Generic.IDictionary`2<System.String,System.Object>,System.Threading.Tasks.Task>, System.Collections.Generic.IDictionary`2<System.String,System.Object>, System.Threading.Tasks.TaskCompletionSource`1<System.Object>, Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.StageAsyncResult)+80    
Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.IntegratedPipelineContextStage.BeginEvent(System.Object, System.EventArgs, System.AsyncCallback, System.Object)+27a    
System.Web.HttpApplication+AsyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()+182    
System.Web.HttpApplication+<>c__DisplayClass285_0.<ExecuteStepImpl>b__0()+25    
System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep)+9b    
System.Web.HttpApplication.ExecuteStep(IExecutionStep, Boolean ByRef)+83    
System.Web.HttpApplication+PipelineStepManager.ResumeSteps(System.Exception)+74d    
System.Web.HttpApplication.BeginProcessRequestNotification(System.Web.HttpContext, System.AsyncCallback)+83    
System.Web.HttpRuntime.ProcessRequestNotificationPrivate(System.Web.Hosting.IIS7WorkerRequest, System.Web.HttpContext)+1e2    
System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper(IntPtr, IntPtr, IntPtr, Int32)+441    
System.Web.Hosting.PipelineRuntime.ProcessRequestNotification(IntPtr, IntPtr, IntPtr, Int32)+13    
DomainNeutralILStubClass.IL_STUB_ReversePInvoke(Int64, Int64, Int64, Int32)+52    
clr!UMThunkStub+6e    
webengine4!W3_MGD_HANDLER::ProcessNotification+8e    
webengine4!W3_MGD_HANDLER::DoWork+3a5    
webengine4!RequestDoWork+3fc    
webengine4!CMgdEngHttpModule::OnAcquireRequestState+1f    
iiscore!NOTIFICATION_CONTEXT::RequestDoWork+b9    
iiscore!NOTIFICATION_CONTEXT::CallModulesInternal+19c    
iiscore!NOTIFICATION_CONTEXT::CallModules+36    
iiscore!NOTIFICATION_MAIN::DoWork+1cf    
iiscore!W3_CONTEXT_BASE::IndicateCompletion+d6    
webengine4!W3_MGD_HANDLER::IndicateCompletion+5d    
webengine4!MgdIndicateCompletion+22    
DomainNeutralILStubClass.IL_STUB_PInvoke(IntPtr, System.Web.RequestNotificationStatus ByRef)+7e    
System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper(IntPtr, IntPtr, IntPtr, Int32)+504    
System.Web.Hosting.PipelineRuntime.ProcessRequestNotification(IntPtr, IntPtr, IntPtr, Int32)+13    
DomainNeutralILStubClass.IL_STUB_ReversePInvoke(Int64, Int64, Int64, Int32)+52    
clr!UM2MThunk_WrapperHelper+43    
clr!UM2MThunk_Wrapper+60    
clr!Thread::DoADCallBack+13d    
clr!UM2MDoADCallBack+b3    
clr!UMThunkStub+26d    
webengine4!W3_MGD_HANDLER::ProcessNotification+8e    
webengine4!ProcessNotificationCallback+42    
clr!UnManagedPerAppDomainTPCount::DispatchWorkItem+1bc    
clr!ThreadpoolMgr::ExecuteWorkRequest+64    
clr!ThreadpoolMgr::WorkerThreadStart+f5    
clr!Thread::intermediateThreadProc+86    
kernel32!BaseThreadInitThunk+14    
ntdll!RtlUserThreadStart+21 
Windows Server 2016 - 14393
Processor Type X64
Process Bitness  64-Bit
CLR version = 4.7.3394.0

This is blocker for us to start using DryIoc. This is really strange error, it does not seem to happen in Debug mode and performance seems better in Debug. When built in Release this error occurs and CPU spikes way more. Maybe it has something to do with Jit compiler

About this issue

  • Original URL
  • State: closed
  • Created 5 years ago
  • Comments: 101 (98 by maintainers)

Commits related to this issue

Most upvoted comments

I fixed it 👍 Stackoverflow is also gone. FEC LoadTest 17sec.
withoutFastExpressionCompiler LoadTest 21sec

Hi @Havunen

I have time Today to play with the LoadTest and wow! - this is an actual real-world usage scenario that DryIoc is needed to improve. 155 controllers - yay! So again - thanks for your work.

As of my test - 2nd and 3rd case are working for me. 1st is not and indeed throws a StackOverflow exception after a while. At the moment I am assuming the exception boils down to using FEC. Will try to track it down.

Thanks for the idea, but it didn’t work 😕

Its still crashing

Hi @havunen,

I had the typed Closure classes before with typed properties which look like that Closure<T1, T2... T8>. The problem is variation of property count, and anyway the fallback to the ArrayClosure at the end. Another problem is complexity where I need a conditional logic all over the place to load constants from the differrent closure types.

Regarding the number of instructions, it maybe solved by adding a method to access constant in ArrayClosure and emitting the method call. Will try it.

Btw, I did an experiment removing the Castclass in TryEmitConstant and it kind of worked, so will check other places to try the same.

Curry is no longer called in the branch, but SO is still here.

Did you see my tweets a min ago 😄 https://twitter.com/dadhi/status/1162447342366277633?s=19

Thanks a lot! How did you set a specific stack size?

Then I wanted to compare how much / what code Linq compiler emits and tried to use CompileToMethod. Unfortunately it failed to exception …

Unfortunately CompileToMethod can compile to static delegate only. That’s mean, no closure over non-literal values. Wich is not suitable for expressions produced by DryIoc.

I am currently fixing the issue with the shared closure in FEC to return to status quo. Then I will simplify logic in the ambient scope context - which is my current top suspect why SO hapens even without thread contention in Reduced load test.

Btw @dadhi I found something interesting today. Different compilation targets give different results:

Target Debug x86 - System.OutOfMemoryException AnyCPU - System.StackOverflowException x64 - Works

Target Release x86 - System.StackOverflowException AnyCPU - System.StackOverflowException x64 - -Works - Load Test Result – 00:05:06.48

Yes, I am playing both with compiled delegate and expression (sub-expression) cache.

The cache will be partitioned by service reuse:

  • Singleton or Transient
  • Scoped to specifically named or unnamed scope

Conditional request dependent services and decorators won’t be cached.

I debugged this further and realized its cycling between TryInterpret and TryInterpretMany always returning true and its going into NewExpression branch. I started tracking changes and noticed additional decorators were added quite same time this stackoverflow exception started occuring. I believe it has something to do with dependencies of decorators

Today this issue started happening in our development server, even without fast expression compiler.

new Container((rules) => 
    rules.WithoutFastExpressionCompiler().With(FactoryMethod.ConstructorWithResolvableArguments)
);

Here is crash dump:

| Arg 1 | Arg 2 | Arg 3 | Arg 4 | Source – | – | – | – | – | – DynamicClass.lambda_method(System.Runtime.CompilerServices.Closure)+5 | 000000102fdd628 | 00007fe9b1e6c18 | 000000000000000 | 00007fe99c56417 |   DryIoc.Scope.TryGetOrAdd(ImTools.ImMap1<System.Object>, Int32, DryIoc.CreateScopedValue, Int32)+b9 | 000000102fdd400 | 0000002002c8d98 | 0000000000000b1 | 000000205ff93e0 |   DryIoc.Scope.GetOrAdd(Int32, DryIoc.CreateScopedValue, Int32)+4f | 000000000000003 | 0000002002c8d98 | 000000102fdd628 | 00007fe9c9fb580 |   DynamicClass.lambda_method(System.Runtime.CompilerServices.Closure, DryIoc.IResolverContext)+125 | 0000002003faae0 | 00007fe9b1e6cdc | 00007fe99c65d45 | 00007fef9361405 |   DryIoc.Container.DryIoc.IResolver.Resolve(System.Type, System.Object, DryIoc.IfUnresolved, System.Type, DryIoc.Request, System.Object[])+245 | 0000001056a7ff8 | 00007fe9b5d914c | 0000001056e1408 | 00007fe9d53bd98 |   DryIoc.Container.ResolveAndCacheFactoryDelegate(System.Type, DryIoc.IfUnresolved)+103 | 000000200185c40 | 00007fe9bcbebac | 0000001056f2a90 | 0000001056dfe28 |   System.Web.Http.Dispatcher.DefaultHttpControllerActivator.GetInstanceOrActivator(System.Net.Http.HttpRequestMessage, System.Type, System.Func1<System.Web.Http.Controllers.IHttpController> ByRef)+26 | 0000001056dfe28 | 0000001002c5798 | 0000001056dff60 | 00007fe9d0fe2e7 |   System.Web.Http.Dispatcher.DefaultHttpControllerActivator.Create(System.Net.Http.HttpRequestMessage, System.Web.Http.Controllers.HttpControllerDescriptor, System.Type)+5c | 00007fe99cd0bb8 | 00007fe99c65c69 | 000000000000000 | 0000002002ce480 |   System.Web.Http.Dispatcher.HttpControllerDispatcher+<SendAsync>d__15.MoveNext()+11d | 0000000159ddf78 | 0000001056e7098 | 0000000159ddf30 | 0000001056b7630 |   System.Runtime.CompilerServices.AsyncTaskMethodBuilder1[[System.__Canon, mscorlib]].Start[[System.Web.Http.Dispatcher.HttpControllerDispatcher+<SendAsync>d__15, System.Web.Http]](<SendAsync>d__15 ByRef)+6c | 0000001056dfe28 | 0000001056e71a8 | 000000200417e58 | 00007fe9d0fcd96 |   System.Web.Http.Dispatcher.HttpControllerDispatcher.SendAsync(System.Net.Http.HttpRequestMessage, System.Threading.CancellationToken)+7d | 0000001056f2c08 | 0000001056dff60 | 0000000159ddfe0 | 0000001056b7630 |   System.Net.Http.HttpMessageInvoker.SendAsync(System.Net.Http.HttpRequestMessage, System.Threading.CancellationToken)+52 | 000000200187270 | 0000002002f85a0 | 0000001056dff60 | 00007fe9d0fb650 |   System.Web.Http.Dispatcher.HttpRoutingDispatcher.SendAsync(System.Net.Http.HttpRequestMessage, System.Threading.CancellationToken)+213 | 0000001056a7ff8 | 00007fe99c5dfe5 | 00007fe9d53bd28 | 0000001056dfe28 |   System.Net.Http.DelegatingHandler.SendAsync(System.Net.Http.HttpRequestMessage, System.Threading.CancellationToken)+31 | 0000001056dff60 | 00007fe9d0fb650 | 000000000000000 | 00007fe99c65c69 |   DryIoc.WebApi.RegisterRequestMessageHandler.SendAsync(System.Net.Http.HttpRequestMessage, System.Threading.CancellationToken)+29 | 0000001056e10a8 | 00007fe9d53b968 | 0000002004e2d90 | 00007fe9d0fb528 |   System.Net.Http.DelegatingHandler.SendAsync(System.Net.Http.HttpRequestMessage, System.Threading.CancellationToken)+31 | 0000001056e1180 | 00007fe9d53b968 | 0000001056dfe28 | 0000000159de2c8 |   System.Web.Http.HttpServer.<>n__0(System.Net.Http.HttpRequestMessage, System.Threading.CancellationToken)+9 | 0000000159de200 | 00007fe99c65c69 | 0000001056e0e30 | 0000001056dff60 |   System.Web.Http.HttpServer+<SendAsync>d__24.MoveNext()+16f | 0000000159de2c8 | 0000001056dfbb0 | 000000000000000 | 0000001056a0510 |   System.Runtime.CompilerServices.AsyncTaskMethodBuilder1[[System.__Canon, mscorlib]].Start[[System.Web.Http.HttpServer+<SendAsync>d__24, System.Web.Http]](<SendAsync>d__24 ByRef)+6c | 0000000159de3d8 | 00007fe9a0f7dc8 | 0000000159de358 | 00007fe99c65c69 |   System.Web.Http.HttpServer.SendAsync(System.Net.Http.HttpRequestMessage, System.Threading.CancellationToken)+7d | 000000000000001 | 00007fe9d0fa11e | 000000100866400 | 0000001056b7398 |   System.Net.Http.HttpMessageInvoker.SendAsync(System.Net.Http.HttpRequestMessage, System.Threading.CancellationToken)+52 | 0000000159de430 | 00007fe99c66a02 | 000000000000000 | 00007fe99c65c69 |   System.Web.Http.Owin.HttpMessageHandlerAdapter+<InvokeCore>d__20.MoveNext()+253 | 0000000159de4f0 | 00007fe9d0f5fdf | 0000001056a0498 | 00007fe9b1dfa5d |   System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[[System.Web.Http.Owin.HttpMessageHandlerAdapter+<InvokeCore>d__20, System.Web.Http.Owin]](<InvokeCore>d__20 ByRef)+6c | 000000000000000 | 000000000000000 | 000000000000000 | 000000000000000 |   System.Web.Http.Owin.HttpMessageHandlerAdapter.InvokeCore(Microsoft.Owin.IOwinContext, Microsoft.Owin.IOwinRequest, Microsoft.Owin.IOwinResponse)+6b | 00007fef92127ce | 00007fe99c65c69 | 0000000159de3f8 | 00000010004b4d0 |   Microsoft.Owin.Security.Infrastructure.AuthenticationMiddleware1+<Invoke>d__5[[System.__Canon, mscorlib]].MoveNext()+222 | 0000000159de6e8 | 000000000000000 | 0000001056dedc8 | 00007fe9a9fe270 |   System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[[Microsoft.Owin.Security.Infrastructure.AuthenticationMiddleware1+<Invoke>d__5[[System.__Canon, mscorlib]], Microsoft.Owin.Security]](<Invoke>d__5<System.__Canon> ByRef)+96 | 0000002000b89e8 | 0000001056dfbb0 | 00007fe9d0bf9e9 | 00007fe9d0bf7ea |   Microsoft.Owin.Security.Infrastructure.AuthenticationMiddleware1[[System.__Canon, mscorlib]].Invoke(Microsoft.Owin.IOwinContext)+8e | 0000001056a0498 | 00007fe9b1dfa5d | 0000001056debc0 | 0000002004eee18 |   Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.IntegratedPipelineContextStage+<RunApp>d__7.MoveNext()+3c | 0000000159de880 | 0000002004eee18 | 0000000159de840 | 0000001056a50a0 |   System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[[Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.IntegratedPipelineContextStage+<RunApp>d__7, Microsoft.Owin.Host.SystemWeb]](<RunApp>d__7 ByRef)+6c | 0000001056a7ff8 | 0000002002c3770 | 00007fe9d0be9a3 | 00007fe9d0be682 |   Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.IntegratedPipelineContextStage.RunApp(System.Func2<System.Collections.Generic.IDictionary2<System.String,System.Object>,System.Threading.Tasks.Task>, System.Collections.Generic.IDictionary2<System.String,System.Object>, System.Threading.Tasks.TaskCompletionSource1<System.Object>, Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.StageAsyncResult)+70 | 0000000159de970 | 00007feea694cba | 0000001056b7630 | 00000000da3fa20 |   Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.IntegratedPipelineContextStage.BeginEvent(System.Object, System.EventArgs, System.AsyncCallback, System.Object)+233 | 000000000000005 | 00007fe9d0b313a | 00000000da3faa8 | 00007fe9b2a6795 |   System.Web.HttpApplication+AsyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()+ef | 000000000000000 | 0000001056dfa38 | 0000001056dfa38 | 000000200b99328 |   System.Web.HttpApplication+<>c__DisplayClass285_0.<ExecuteStepImpl>b__0()+25 | 0000001056dfa78 | 00007fe9a434db8 | 0000000159de9c0 | 00007fe9d0a7255 |   System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep)+a6 | 0000001055d15c0 | 00007fe9d0b304f | 000000000000000 | 00007fe9d0b3231 |   System.Web.HttpApplication.ExecuteStep(IExecutionStep, Boolean ByRef)+83 | 000000200b95f10 | 000000200b99fe8 | 0000000159deb48 | 000000000000000 |   System.Web.HttpApplication+PipelineStepManager.ResumeSteps(System.Exception)+4e3 | 000000200b9ad18 | 00007fe9d0acd01 | 0000001056df348 | 0000000159dec30 |   System.Web.HttpApplication.BeginProcessRequestNotification(System.Web.HttpContext, System.AsyncCallback)+70 | 0000000159dec40 | 00007fef91a50f9 | 0000000159dec18 | 000000000000000 |   System.Web.HttpRuntime.ProcessRequestNotificationPrivate(System.Web.Hosting.IIS7WorkerRequest, System.Web.HttpContext)+177 | 0000000fffd3e60 | 000000102fceb78 | 000000102fcf0a8 | 000000000000000 |   System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper(IntPtr, IntPtr, IntPtr, Int32)+33a | 000000000000018 | 00000001ce8d930 | 000000000000010 | 000000000ab2c70 |   System.Web.Hosting.PipelineRuntime.ProcessRequestNotification(IntPtr, IntPtr, IntPtr, Int32)+13 | 00050b40358798d | 0000000159def50 | 00007feea693060 | 00007fee3071d38 |   DomainBoundILStubClass.IL_STUB_ReversePInvoke(Int64, Int64, Int64, Int32)+52 | 000000000000000 | 000000000000000 | 000000000000000 | 000000000000000 |   clr!UMThunkStub+6e | 00000001ce8d930 | 00007fe00000000 | 00000001ce8dd60 | 00000001ce8dddc |   webengine4!W3_MGD_HANDLER::ProcessNotification+8e | 00007fe00000000 | 00007feea695f40 | 00000001ce8d930 | 00007feea699a22 |   webengine4!W3_MGD_HANDLER::DoWork+3a5 | 00007feea695f40 | 000000000000020 | 00000001ce8d930 | 000000000000000 |   webengine4!RequestDoWork+3fc | 000000000000001 | 00000000d30b5c8 | 0000000011a9b38 | 00000000da3fa20 |   webengine4!CMgdEngHttpModule::OnAcquireRequestState+1f | 000000000000000 | 0000000011a9cd8 | 000000000000000 | 00000001cbea7f0 |   iiscore!NOTIFICATION_CONTEXT::RequestDoWork+2a8 | 00000000da3fa28 | 0000002000b89e8 | 0000000159df0d0 | 0000002000b89e8 |   iiscore!NOTIFICATION_CONTEXT::CallModulesInternal+174 | 0000001056a5a10 | 00000000da3fa20 | 00000000da3fa28 | 000000000000000 |   iiscore!NOTIFICATION_CONTEXT::CallModules+25 | 0000000159df220 | 00007fef91e6bb9 | 0000001056a5c78 | 000000000000000 |   iiscore!W3_CONTEXT::DoWork+18f | 00000001ce8db90 | 00000001ce8db98 | 00000001ce8dc40 | 00000001ce8dc48 |   iiscore!W3_CONTEXT::IndicateCompletion+8c | 0000000159df680 | 000000000000000 | 00007feea69a790 | 000000000000000 |   webengine4!W3_MGD_HANDLER::IndicateCompletion+5d | 0000000159df790 | 0000000159df790 | 0000000159df758 | 00007fe9d0a7255 |   webengine4!MgdIndicateCompletion+22 | 0000001055d2288 | 00007fe9d0acd01 | 0000000159df5c0 | 0007cbd16d67245 |   DomainBoundILStubClass.IL_STUB_PInvoke(IntPtr, System.Web.RequestNotificationStatus ByRef)+7e | 0000000fffd3e60 | 0000001055d15c0 | 0000000159df760 | 00000001cbea7f0 |   System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper(IntPtr, IntPtr, IntPtr, Int32)+3e2 | 000000000000000 | 00000001ce8d930 | 000000000000000 | 000000000000000 |   System.Web.Hosting.PipelineRuntime.ProcessRequestNotification(IntPtr, IntPtr, IntPtr, Int32)+13 | 000000000000000 | 00000001cbea7f0 | 000000000000000 | 000000000000000 |   DomainBoundILStubClass.IL_STUB_ReversePInvoke(Int64, Int64, Int64, Int32)+52 | 000000000000000 | 00007fe00000001 | 000000002933501 | 00007fef91aa568 |   clr!UM2MThunk_WrapperHelper+43 | 000000000000000 | 00007fef91a5c75 | 000000000000000 | 00007fef91aa2b0 |   clr!UM2MThunk_Wrapper+60 | 0000000159dfa08 | 000000000000000 | 00000001cbea7f0 | 00007fef91a67a7 |   clr!Thread::DoADCallBack+13d | 0000000159dfb01 | 000000200000002 | 00050b403586e9d | 0000000159dfb40 |   clr!UM2MDoADCallBack+b3 | 0000000092ab590 | 000000000000000 | 00000000000000b | 000000000000000 |   clr!UMThunkStub+26d | 000000000000000 | 00000001ce8d930 | 00000000000000b | 000000000000004 |   webengine4!W3_MGD_HANDLER::ProcessNotification+8e | 000000000000004 | 00000001ce8d930 | 00007fef9ae44b0 | 0000000159dfde0 |   webengine4!ProcessNotificationCallback+42 | 00000001ce8d930 | 00007fee3071750 | 00007fef9ae44b0 | 000000000000000 |   clr!UnManagedPerAppDomainTPCount::DispatchWorkItem+1bc | 00007fef91a97f0 | 0000000159dfd00 | 0000000159dfd01 | 0000000001f4144 |   clr!ThreadpoolMgr::ExecuteWorkRequest+64 | 0020002000c000d | 000000000000001 | 00000001cbea7f0 | 00000001cbea7f0 |   clr!ThreadpoolMgr::WorkerThreadStart+f5 | 000000000000000 | 000000000000001 | 000000000000001 | 000000000000409 |   clr!Thread::intermediateThreadProc+86 | 000000000000000 | 000000000000000 | 000000000000000 | 000000000000000 |   kernel32!BaseThreadInitThunk+d | 000000000000000 | 000000000000000 | 000000000000000 | 0000000`00000000 |   ntdll!RtlUserThreadStart+1d

.Net callstack

DynamicClass.lambda_method(System.Runtime.CompilerServices.Closure)+5
DryIoc.Scope.TryGetOrAdd(ImTools.ImMap`1, Int32, DryIoc.CreateScopedValue, Int32)+b9
DryIoc.Scope.GetOrAdd(Int32, DryIoc.CreateScopedValue, Int32)+4f
DynamicClass.lambda_method(System.Runtime.CompilerServices.Closure, DryIoc.IResolverContext)+125
DryIoc.Container.DryIoc.IResolver.Resolve(System.Type, System.Object, DryIoc.IfUnresolved, System.Type, DryIoc.Request, System.Object[])+245
DryIoc.Container.ResolveAndCacheFactoryDelegate(System.Type, DryIoc.IfUnresolved)+103
System.Web.Http.Dispatcher.DefaultHttpControllerActivator.GetInstanceOrActivator(System.Net.Http.HttpRequestMessage, System.Type, System.Func`1 ByRef)+26
System.Web.Http.Dispatcher.DefaultHttpControllerActivator.Create(System.Net.Http.HttpRequestMessage, System.Web.Http.Controllers.HttpControllerDescriptor, System.Type)+5c
System.Web.Http.Dispatcher.HttpControllerDispatcher+d__15.MoveNext()+11d
System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.__Canon, mscorlib]].Start[[System.Web.Http.Dispatcher.HttpControllerDispatcher+d__15, System.Web.Http]](d__15 ByRef)+6c
System.Web.Http.Dispatcher.HttpControllerDispatcher.SendAsync(System.Net.Http.HttpRequestMessage, System.Threading.CancellationToken)+7d
System.Net.Http.HttpMessageInvoker.SendAsync(System.Net.Http.HttpRequestMessage, System.Threading.CancellationToken)+52
System.Web.Http.Dispatcher.HttpRoutingDispatcher.SendAsync(System.Net.Http.HttpRequestMessage, System.Threading.CancellationToken)+213
System.Net.Http.DelegatingHandler.SendAsync(System.Net.Http.HttpRequestMessage, System.Threading.CancellationToken)+31
DryIoc.WebApi.RegisterRequestMessageHandler.SendAsync(System.Net.Http.HttpRequestMessage, System.Threading.CancellationToken)+29
System.Net.Http.DelegatingHandler.SendAsync(System.Net.Http.HttpRequestMessage, System.Threading.CancellationToken)+31
System.Web.Http.HttpServer.<>n__0(System.Net.Http.HttpRequestMessage, System.Threading.CancellationToken)+9
System.Web.Http.HttpServer+d__24.MoveNext()+16f
System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.__Canon, mscorlib]].Start[[System.Web.Http.HttpServer+d__24, System.Web.Http]](d__24 ByRef)+6c
System.Web.Http.HttpServer.SendAsync(System.Net.Http.HttpRequestMessage, System.Threading.CancellationToken)+7d
System.Net.Http.HttpMessageInvoker.SendAsync(System.Net.Http.HttpRequestMessage, System.Threading.CancellationToken)+52
System.Web.Http.Owin.HttpMessageHandlerAdapter+d__20.MoveNext()+253
System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[[System.Web.Http.Owin.HttpMessageHandlerAdapter+d__20, System.Web.Http.Owin]](d__20 ByRef)+6c
System.Web.Http.Owin.HttpMessageHandlerAdapter.InvokeCore(Microsoft.Owin.IOwinContext, Microsoft.Owin.IOwinRequest, Microsoft.Owin.IOwinResponse)+6b
Microsoft.Owin.Security.Infrastructure.AuthenticationMiddleware`1+d__5[[System.__Canon, mscorlib]].MoveNext()+222
System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[[Microsoft.Owin.Security.Infrastructure.AuthenticationMiddleware`1+d__5[[System.__Canon, mscorlib]], Microsoft.Owin.Security]](d__5 ByRef)+96
Microsoft.Owin.Security.Infrastructure.AuthenticationMiddleware`1[[System.__Canon, mscorlib]].Invoke(Microsoft.Owin.IOwinContext)+8e
Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.IntegratedPipelineContextStage+d__7.MoveNext()+3c
System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[[Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.IntegratedPipelineContextStage+d__7, Microsoft.Owin.Host.SystemWeb]](d__7 ByRef)+6c
Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.IntegratedPipelineContextStage.RunApp(System.Func`2,System.Threading.Tasks.Task>, System.Collections.Generic.IDictionary`2, System.Threading.Tasks.TaskCompletionSource`1, Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.StageAsyncResult)+70
Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.IntegratedPipelineContextStage.BeginEvent(System.Object, System.EventArgs, System.AsyncCallback, System.Object)+233
System.Web.HttpApplication+AsyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()+ef
System.Web.HttpApplication+<>c__DisplayClass285_0.b__0()+25
System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep)+a6
System.Web.HttpApplication.ExecuteStep(IExecutionStep, Boolean ByRef)+83
System.Web.HttpApplication+PipelineStepManager.ResumeSteps(System.Exception)+4e3
System.Web.HttpApplication.BeginProcessRequestNotification(System.Web.HttpContext, System.AsyncCallback)+70
System.Web.HttpRuntime.ProcessRequestNotificationPrivate(System.Web.Hosting.IIS7WorkerRequest, System.Web.HttpContext)+177
System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper(IntPtr, IntPtr, IntPtr, Int32)+33a
System.Web.Hosting.PipelineRuntime.ProcessRequestNotification(IntPtr, IntPtr, IntPtr, Int32)+13
DomainBoundILStubClass.IL_STUB_ReversePInvoke(Int64, Int64, Int64, Int32)+52
DomainBoundILStubClass.IL_STUB_PInvoke(IntPtr, System.Web.RequestNotificationStatus ByRef)+7e
[[InlinedCallFrame] (System.Web.Hosting.UnsafeIISMethods.MgdIndicateCompletion)] System.Web.Hosting.UnsafeIISMethods.MgdIndicateCompletion(IntPtr, System.Web.RequestNotificationStatusByRef)
System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper(IntPtr, IntPtr, IntPtr, Int32)+3e2
System.Web.Hosting.PipelineRuntime.ProcessRequestNotification(IntPtr, IntPtr, IntPtr, Int32)+13
DomainBoundILStubClass.IL_STUB_ReversePInvoke(Int64, Int64, Int64, Int32)+52
[[ContextTransitionFrame]]