转储文件在哪里是monitor.wait入口点?以及如何找到等待的原因?

时间:2017-06-04 05:03:34

标签: debugging asp.net-core .net-core windbg dump

在以下转储文件中

  

windbg!dumpstack

monitor.wait入口点在哪里?

以及我如何找到等待的原因?

和导致等待的功能?

我确定等待发生在这里,但我无法通过转储文件找到我的方式

等待发生在哪个功能?

我怎样才能进一步调查等待的原因?

是否有任何资源或教程可以找到这种等待的原因?

ntdll!NtWaitForMultipleObjects+14    
KERNELBASE!WaitForMultipleObjectsEx+ef    
coreclr!Thread::DoAppropriateWaitWorker+fe    
coreclr!Thread::DoAppropriateWait+7d    
coreclr!CLREventBase::WaitEx+7f    
coreclr!SyncBlock::Wait+194    
[[GCFrame]]    
coreclr!ObjectNative::WaitTimeout+d4    
[[HelperMethodFrame_1OBJ] (System.Threading.Monitor.ObjWait)] System.Threading.Monitor.ObjWait(Boolean, Int32, System.Object)    
System.Threading.ManualResetEventSlim.Wait(Int32, System.Threading.CancellationToken)+398    
System.Threading.Tasks.Task.SpinThenBlockingWait(Int32, System.Threading.CancellationToken)+b9    
System.Threading.Tasks.Task.InternalWait(Int32, System.Threading.CancellationToken)+1a2    
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task)+25    
Microsoft.AspNetCore.Mvc.Rendering.HtmlHelperPartialExtensions.Partial(Microsoft.AspNetCore.Mvc.Rendering.IHtmlHelper, System.String, System.Object, Microsoft.AspNetCore.Mvc.ViewFeatures.ViewDataDictionary)+3c    
AspNetCore._Areas_Article_Views_Article_Index_cshtml+<ExecuteAsync>d__86.MoveNext()+2c2    
System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[[AspNetCore._Areas_Article_Views_Article_Index_cshtml+<ExecuteAsync>d__86, fkzqs1mt.znn]](<ExecuteAsync>d__86 ByRef)+45    
AspNetCore._Areas_Article_Views_Article_Index_cshtml.ExecuteAsync()+7e    
Microsoft.AspNetCore.Mvc.Razor.RazorView+<RenderPageAsync>d__14.MoveNext()+367    
System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.__Canon, System.Private.CoreLib]].Start[[Microsoft.AspNetCore.Mvc.Razor.RazorView+<RenderPageAsync>d__14, Microsoft.AspNetCore.Mvc.Razor]](<RenderPageAsync>d__14 ByRef)+4d    
Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderPageAsync(Microsoft.AspNetCore.Mvc.Razor.IRazorPage, Microsoft.AspNetCore.Mvc.Rendering.ViewContext, Boolean)+ac    
Microsoft.AspNetCore.Mvc.Razor.RazorView+<RenderAsync>d__13.MoveNext()+a6    
System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[[Microsoft.AspNetCore.Mvc.Razor.RazorView+<RenderAsync>d__13, Microsoft.AspNetCore.Mvc.Razor]](<RenderAsync>d__13 ByRef)+45    
Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderAsync(Microsoft.AspNetCore.Mvc.Rendering.ViewContext)+89    
Microsoft.AspNetCore.Mvc.ViewFeatures.ViewExecutor+<ExecuteAsync>d__18.MoveNext()+2e5    
System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[[Microsoft.AspNetCore.Mvc.ViewFeatures.ViewExecutor+<ExecuteAsync>d__18, Microsoft.AspNetCore.Mvc.ViewFeatures]](<ExecuteAsync>d__18 ByRef)+45    
Microsoft.AspNetCore.Mvc.ViewFeatures.ViewExecutor.ExecuteAsync(Microsoft.AspNetCore.Mvc.ActionContext, Microsoft.AspNetCore.Mvc.ViewEngines.IView, Microsoft.AspNetCore.Mvc.ViewFeatures.ViewDataDictionary, Microsoft.AspNetCore.Mvc.ViewFeatures.ITempDataDictionary, System.String, System.Nullable`1<Int32>)+cc    
Microsoft.AspNetCore.Mvc.ViewFeatures.Internal.ViewResultExecutor.ExecuteAsync(Microsoft.AspNetCore.Mvc.ActionContext, Microsoft.AspNetCore.Mvc.ViewEngines.IView, Microsoft.AspNetCore.Mvc.ViewResult)+8a    
Microsoft.AspNetCore.Mvc.ViewResult+<ExecuteResultAsync>d__26.MoveNext()+e5    
System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[[Microsoft.AspNetCore.Mvc.ViewResult+<ExecuteResultAsync>d__26, Microsoft.AspNetCore.Mvc.ViewFeatures]](<ExecuteResultAsync>d__26 ByRef)+45    
Microsoft.AspNetCore.Mvc.ViewResult.ExecuteResultAsync(Microsoft.AspNetCore.Mvc.ActionContext)+89    
Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker+<InvokeResultAsync>d__30.MoveNext()+88    
System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[[Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker+<InvokeResultAsync>d__30, Microsoft.AspNetCore.Mvc.Core]](<InvokeResultAsync>d__30 ByRef)+45    
Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeResultAsync(Microsoft.AspNetCore.Mvc.IActionResult)+89    
Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Next(State ByRef, Scope ByRef, System.Object ByRef, Boolean ByRef)+1351    
Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker+<InvokeNextResultFilterAsync>d__28.MoveNext()+b0    
System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[[Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker+<InvokeNextResultFilterAsync>d__28, Microsoft.AspNetCore.Mvc.Core]](<InvokeNextResultFilterAsync>d__28 ByRef)+45    
Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeNextResultFilterAsync()+84    
Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Next(State ByRef, Scope ByRef, System.Object ByRef, Boolean ByRef)+128e    
Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker+<InvokeNextResourceFilter>d__22.MoveNext()+b0    
System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[[Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker+<InvokeNextResourceFilter>d__22, Microsoft.AspNetCore.Mvc.Core]](<InvokeNextResourceFilter>d__22 ByRef)+45    
Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeNextResourceFilter()+84    
Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Next(State ByRef, Scope ByRef, System.Object ByRef, Boolean ByRef)+583    
Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker+<InvokeAsync>d__20.MoveNext()+1f3    
System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[[Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker+<InvokeAsync>d__20, Microsoft.AspNetCore.Mvc.Core]](<InvokeAsync>d__20 ByRef)+45    
Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeAsync()+9b    
Microsoft.AspNetCore.Builder.RouterMiddleware+<Invoke>d__4.MoveNext()+2e4    
System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[[Microsoft.AspNetCore.Builder.RouterMiddleware+<Invoke>d__4, Microsoft.AspNetCore.Routing]](<Invoke>d__4 ByRef)+45    
Microsoft.AspNetCore.Builder.RouterMiddleware.Invoke(Microsoft.AspNetCore.Http.HttpContext)+89    
NWebsec.AspNetCore.Middleware.Middleware.MiddlewareBase+<Invoke>d__2.MoveNext()+68    
System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[[NWebsec.AspNetCore.Middleware.Middleware.MiddlewareBase+<Invoke>d__2, NWebsec.AspNetCore.Middleware]](<Invoke>d__2 ByRef)+45    
NWebsec.AspNetCore.Middleware.Middleware.MiddlewareBase.Invoke(Microsoft.AspNetCore.Http.HttpContext)+83    
NWebsec.AspNetCore.Middleware.Middleware.MiddlewareBase+<Invoke>d__2.MoveNext()+68    
System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[[NWebsec.AspNetCore.Middleware.Middleware.MiddlewareBase+<Invoke>d__2, NWebsec.AspNetCore.Middleware]](<Invoke>d__2 ByRef)+45    
NWebsec.AspNetCore.Middleware.Middleware.MiddlewareBase.Invoke(Microsoft.AspNetCore.Http.HttpContext)+83    
NWebsec.AspNetCore.Middleware.Middleware.MiddlewareBase+<Invoke>d__2.MoveNext()+68    
System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[[NWebsec.AspNetCore.Middleware.Middleware.MiddlewareBase+<Invoke>d__2, NWebsec.AspNetCore.Middleware]](<Invoke>d__2 ByRef)+45    
NWebsec.AspNetCore.Middleware.Middleware.MiddlewareBase.Invoke(Microsoft.AspNetCore.Http.HttpContext)+83    
Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware.Invoke(Microsoft.AspNetCore.Http.HttpContext)+21b    
Microsoft.AspNetCore.Authentication.AuthenticationMiddleware`1+<Invoke>d__18[[System.__Canon, System.Private.CoreLib]].MoveNext()+2e1    
System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[[Microsoft.AspNetCore.Authentication.AuthenticationMiddleware`1+<Invoke>d__18[[System.__Canon, System.Private.CoreLib]], Microsoft.AspNetCore.Authentication]](<Invoke>d__18<System.__Canon> ByRef)+7e    
Microsoft.AspNetCore.Authentication.AuthenticationMiddleware`1[[System.__Canon, System.Private.CoreLib]].Invoke(Microsoft.AspNetCore.Http.HttpContext)+b9    
Microsoft.AspNetCore.Authentication.AuthenticationMiddleware`1+<Invoke>d__18[[System.__Canon, System.Private.CoreLib]].MoveNext()+2e1    
System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[[Microsoft.AspNetCore.Authentication.AuthenticationMiddleware`1+<Invoke>d__18[[System.__Canon, System.Private.CoreLib]], Microsoft.AspNetCore.Authentication]](<Invoke>d__18<System.__Canon> ByRef)+7e    
Microsoft.AspNetCore.Authentication.AuthenticationMiddleware`1[[System.__Canon, System.Private.CoreLib]].Invoke(Microsoft.AspNetCore.Http.HttpContext)+b9    
Microsoft.AspNetCore.Authentication.AuthenticationMiddleware`1+<Invoke>d__18[[System.__Canon, System.Private.CoreLib]].MoveNext()+2e1    
System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[[Microsoft.AspNetCore.Authentication.AuthenticationMiddleware`1+<Invoke>d__18[[System.__Canon, System.Private.CoreLib]], Microsoft.AspNetCore.Authentication]](<Invoke>d__18<System.__Canon> ByRef)+7e    
Microsoft.AspNetCore.Authentication.AuthenticationMiddleware`1[[System.__Canon, System.Private.CoreLib]].Invoke(Microsoft.AspNetCore.Http.HttpContext)+b9    
Microsoft.AspNetCore.Authentication.AuthenticationMiddleware`1+<Invoke>d__18[[System.__Canon, System.Private.CoreLib]].MoveNext()+2e1    
System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[[Microsoft.AspNetCore.Authentication.AuthenticationMiddleware`1+<Invoke>d__18[[System.__Canon, System.Private.CoreLib]], Microsoft.AspNetCore.Authentication]](<Invoke>d__18<System.__Canon> ByRef)+7e    
Microsoft.AspNetCore.Authentication.AuthenticationMiddleware`1[[System.__Canon, System.Private.CoreLib]].Invoke(Microsoft.AspNetCore.Http.HttpContext)+b9    
Microsoft.AspNetCore.Session.SessionMiddleware+<Invoke>d__9.MoveNext()+2a6    
System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[[Microsoft.AspNetCore.Session.SessionMiddleware+<Invoke>d__9, Microsoft.AspNetCore.Session]](<Invoke>d__9 ByRef)+45    
Microsoft.AspNetCore.Session.SessionMiddleware.Invoke(Microsoft.AspNetCore.Http.HttpContext)+89    
Microsoft.AspNetCore.Builder.RouterMiddleware+<Invoke>d__4.MoveNext()+1c9    
System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[[Microsoft.AspNetCore.Builder.RouterMiddleware+<Invoke>d__4, Microsoft.AspNetCore.Routing]](<Invoke>d__4 ByRef)+45    
Microsoft.AspNetCore.Builder.RouterMiddleware.Invoke(Microsoft.AspNetCore.Http.HttpContext)+89    
Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware+<Invoke>d__6.MoveNext()+76    
System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[[Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware+<Invoke>d__6, Microsoft.AspNetCore.Diagnostics]](<Invoke>d__6 ByRef)+45    
Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware.Invoke(Microsoft.AspNetCore.Http.HttpContext)+8f    
Microsoft.AspNetCore.Diagnostics.StatusCodePagesMiddleware+<Invoke>d__3.MoveNext()+ba    
System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[[Microsoft.AspNetCore.Diagnostics.StatusCodePagesMiddleware+<Invoke>d__3, Microsoft.AspNetCore.Diagnostics]](<Invoke>d__3 ByRef)+45    
Microsoft.AspNetCore.Diagnostics.StatusCodePagesMiddleware.Invoke(Microsoft.AspNetCore.Http.HttpContext)+89    
Microsoft.AspNetCore.Server.IISIntegration.IISMiddleware+<Invoke>d__8.MoveNext()+3c5    
System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[[Microsoft.AspNetCore.Server.IISIntegration.IISMiddleware+<Invoke>d__8, Microsoft.AspNetCore.Server.IISIntegration]](<Invoke>d__8 ByRef)+45    
Microsoft.AspNetCore.Server.IISIntegration.IISMiddleware.Invoke(Microsoft.AspNetCore.Http.HttpContext)+89    
Microsoft.AspNetCore.Hosting.Internal.RequestServicesContainerMiddleware+<Invoke>d__3.MoveNext()+205    
System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[[Microsoft.AspNetCore.Hosting.Internal.RequestServicesContainerMiddleware+<Invoke>d__3, Microsoft.AspNetCore.Hosting]](<Invoke>d__3 ByRef)+45    
Microsoft.AspNetCore.Hosting.Internal.RequestServicesContainerMiddleware.Invoke(Microsoft.AspNetCore.Http.HttpContext)+89    
Microsoft.AspNetCore.Hosting.Internal.HostingApplication.ProcessRequestAsync(Context)+39    
Microsoft.AspNetCore.Server.Kestrel.Internal.Http.Frame`1+<RequestProcessingAsync>d__2[[Microsoft.AspNetCore.Hosting.Internal.HostingApplication+Context, Microsoft.AspNetCore.Hosting]].MoveNext()+63e    
System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[[Microsoft.AspNetCore.Server.Kestrel.Internal.Http.Frame`1+<RequestProcessingAsync>d__2[[Microsoft.AspNetCore.Hosting.Internal.HostingApplication+Context, Microsoft.AspNetCore.Hosting]], Microsoft.AspNetCore.Server.Kestrel]](<RequestProcessingAsync>d__2<Context> ByRef)+45    
Microsoft.AspNetCore.Server.Kestrel.Internal.Http.Frame`1[[Microsoft.AspNetCore.Hosting.Internal.HostingApplication+Context, Microsoft.AspNetCore.Hosting]].RequestProcessingAsync()+ad    
System.Threading.Tasks.Task`1[[System.__Canon, System.Private.CoreLib]].InnerInvoke()+9b    
System.Threading.Tasks.Task.Execute()+49    
System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)+97    
System.Threading.Tasks.Task.ExecuteWithThreadLocal(System.Threading.Tasks.Task ByRef)+23e    
System.Threading.Tasks.Task.ExecuteEntry(Boolean)+a2    
System.Threading.ThreadPoolWorkQueue.Dispatch()+1e2    
coreclr!CallDescrWorkerInternal+83    
coreclr!MethodDescCallSite::CallTargetWorker+14e    
coreclr!QueueUserWorkItemManagedCallback+38    
coreclr!QueueUserWorkItemManagedCallback+2df    
coreclr!QueueUserWorkItemManagedCallback+234    
coreclr!QueueUserWorkItemManagedCallback+161    
[[DebuggerU2MCatchHandlerFrame]]    
coreclr!QueueUserWorkItemManagedCallback+7b    
coreclr!ManagedPerAppDomainTPCount::DispatchWorkItem+8e    
coreclr!ThreadpoolMgr::WorkerThreadStart+188    
coreclr!Thread::intermediateThreadProc+8b    
kernel32!BaseThreadInitThunk+14    
ntdll!RtlUserThreadStart+21 

1 个答案:

答案 0 :(得分:0)

在ManualResetEventSlim.Wait中调用Monitor.Wait。

ManualResetEventSlim类在等待设置事件时进行一些旋转,如果事件在轮询/旋转时未设置,则会调用Monitor.Wait。

快速扫描堆栈跟踪,看起来您正在等待异步任务完成。这里是等待开始的地方..只需按照堆栈跟踪(转储堆栈对象来查找并进一步分析传入的粗体任务或!clrstack -a可能会获得更多参数和本地信息)。

            System.Threading.Tasks.Task.InternalWait(Int32, System.Threading.CancellationToken)+1a2    
            System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(**System.Threading.Tasks.Task**)+25    
            Microsoft.AspNetCore.Mvc.Rendering.HtmlHelperPartialExtensions.Partial(Microsoft.AspNetCore.Mvc.Rendering.IHtmlHelper, System.String, System.Object, Microsoft.AspNetCore.Mvc.ViewFeatures.ViewDataDictionary)+3c    
            AspNetCore._Areas_Article_Views_Article_Index_cshtml+<ExecuteAsync>d__86.MoveNext()+2c2    
            System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[[AspNetCore._Areas_Article_Views_Article_Index_cshtml+<ExecuteAsync>d__86, fkzqs1mt.znn]](<ExecuteAsync>d__86 ByRef)+45    
            AspNetCore._Areas_Article_Views_Article_Index_cshtml.ExecuteAsync()+7e