Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- The email chain below shows an analysis of one of the IIS crash dump files that I provided to Microsoft Developer Support in the course of troubleshooting the random w3wp.exe crash issue detailed here: http://stackoverflow.com/questions/33001299/intermittent-crash-of-w3wp-exe-with-threadabortexception-after-net-4-6-upgrade. (Note that I have removed personal names and email addresses of MS employees.)
- The obstacle here is that MS only provided this detailed analysis of one dump file. I have strong reasons to believe that a similar analysis of a different dump file would show a completely different stack trace and different affected page, proving that the issue is random:
- • Hammering the supposed culprit page produced no error.
- • The page has no custom recursive code. In fact it takes no user input at all, and just renders static content.
- • The <%=Me.MyBasePage.HiddenSessionID()%> call just returns an empty string. The other <%-- --%> comment blocks are also irrelevant. However, just to be sure, I removed them from the Master page (which is used by many pages) and verified that we still saw crashes.
- • If we roll back .NET 4.6 and recent Windows Updates on a web server, it no longer experiences random crashes.
- So far, despite repeated requests and an escalation to their technical lead, MS Support has failed to provide us with a similarly-detailed analysis of any of the other 8 crash dumps that I sent them.
- I am posting this in the hopes that someone can verify my analysis and/or troubleshoot their own occurrence of this issue if they are also affected.
- We are now in the process of reapplying the updates in groups and waiting several days to watch for crashes, in an effort to narrow down the faulty update.
- From: Jordan Rieger [mailto:jordan@webnames.ca]
- Sent: Friday, October 09, 2015 5:07 PM
- To: Microsoft Support
- Subject: RE: [REG:MS Support Request #] Intermittent crash of w3wp.exe with ThreadAbortException- Action plan
- Would it be possible for you to analyze a different dump that also had the ThreadAbortException crash? Then you could tell me if it's the same classes (Webnames4_5 / press_release_021505) affected or different classes. I think that would be very helpful in isolating the problem.
- From: Jordan Rieger [mailto:jordan@webnames.ca]
- Sent: Friday, October 09, 2015 5:00 PM
- To: Microsoft Support
- Subject: RE: [REG:MS Support Request #] Intermittent crash of w3wp.exe with ThreadAbortException- Action plan
- Oh, I didn't see that! Sorry, thank you.
- But now what puzzles me is that this page is working fine: https://www.webnames.ca/about/press_releases/press_release_021505.aspx
- I can hit the URL multiple times with no crash. And there is nothing in the code of that page that does recursion. In fact it has no code-behind, just markup.
- From: Microsoft Support
- Sent: Friday, October 09, 2015 4:49 PM
- To: Jordan Rieger
- Subject: RE: [REG:MS Support Request #] Intermittent crash of w3wp.exe with ThreadAbortException- Action plan
- Hi Jordan,
- Thanks for your question.
- But the crash is initiated from ASP.about_press_releases_press_release_021505_aspx as seen from the memory dumps.
- With Regards
- From: Jordan Rieger [mailto:jordan@webnames.ca]
- Sent: Saturday, October 10, 2015 4:19 AM
- To: Microsoft Support
- Subject: RE: [REG:MS Support Request #] Intermittent crash of w3wp.exe with ThreadAbortException- Action plan
- Hi,
- Thank you for the detailed stack trace. I have attached the source code for the Master page that is referenced. The code in question is front-end markup on a Master page, and I don't see how it could generate any recursion. Furthermore, that part of the code has not changed in years. Many pages on our site use this master page, and if I browse to them right now they show no problem, e.g.: https://www.webnames.ca/Login.aspx. Here is the markup:
- <form runat="server" id="Form1">
- <ajaxtoolkit:ToolkitScriptManager ID="sm" runat="server" EnablePageMethods="true"
- AsyncPostBackTimeout="60" />
- <%-- PlaceHolder is here to seal off "code blocks" (<% ... %>) so that controls can be dynamically added --%>
- <asp:PlaceHolder ID="phForm" runat="server">
- <%=Me.MyBasePage.HiddenSessionID()%>
- <%-- Somewhere in the master page, a variable named "first" is declared, which conflicts with a
- variable with the same name in the ASP.NET validator functions, so we have to wipe it here.
- Also, we add a global variable to store the ClientID prefix needed to access controls in the main
- content place holder.
- --%>
- <div id="contentwrap">
- <asp:ContentPlaceHolder ID="ucContent" runat="server">
- </asp:ContentPlaceHolder>
- <br />
- <br />
- </div>
- <!-- /#contentwrap -->
- </asp:PlaceHolder>
- </form>
- The ASP.Net front end comments using <%-- --%> tags are actually old an obsolete, so you can ignore those. MyBasePage.HiddenSessionID() returns an empty string.
- Is there any way you can pull out of the dump the URL of the request at the time of the crash? That might really help in pinpointing the problem. Right now it seems to be intermittent, and according to our logs, not associated with any particular request. This leads me to believe that something is going wrong in the .NET 4.6 JIT compiler or the ASP.NET page/control rendering framework that is causing recursion where it shouldn't happen.
- From: Microsoft Support
- Sent: Friday, October 09, 2015 3:14 PM
- To: Jordan Rieger
- Subject: RE: [REG:MS Support Request #] Intermittent crash of w3wp.exe with ThreadAbortException- Action plan
- Hi Jordan,
- Please find the analysis
- Dump: w3wp__Webnames__PID__5376__Date__10_08_2015__Time_10_05_05PM__82__Second_Chance_Exception_E0434352.dmp
- Crashing stack 40 and dumping the stack
- ChildEBP RetAddr
- 00 349eef98 73d61975 KERNELBASE!RaiseException+0x6c
- 01 349ef034 73c6fcd4 clr!RaiseTheExceptionInternalOnly+0x27c
- 02 349ef04c 73c6fc65 clr!RaiseTheException+0x86
- 03 349ef074 73c6fbfe clr!RealCOMPlusThrowWorker+0x72
- 04 (Inline) -------- clr!RealCOMPlusThrow+0x23
- 05 349ef0a8 73e63302 clr!RealCOMPlusThrow+0x2f
- 06 349ef1c8 73e6287c clr!Thread::RaiseCrossContextException+0x36d
- 07 349ef290 73d63c48 clr!Thread::DoADCallBack+0x2d1
- 08 349ef2e8 0234e41b clr!UM2MDoADCallBack+0x92
- 09 349ef31c 74469063 CLRStub[StubLinkStub]@2177be760234e41b
- 0a 349ef340 744690bd webengine4!W3_MGD_HANDLER::ProcessNotification+0x5a
- 0b 349ef350 73d5661d webengine4!ProcessNotificationCallback+0x32
- 0c 349ef398 73d6465f clr!UnManagedPerAppDomainTPCount::DispatchWorkItem+0x1ce
- 0d 349ef3ac 73d6479e clr!ThreadpoolMgr::ExecuteWorkRequest+0x42
- 0e 349ef414 73d59fd1 clr!ThreadpoolMgr::WorkerThreadStart+0x390
- 0f 349ef9ac 766386e3 clr!Thread::intermediateThreadProc+0x4d
- 10 349ef9b8 771ebd79 kernel32!BaseThreadInitThunk+0xe
- 11 349ef9fc 771ebd4c ntdll!__RtlUserThreadStart+0x72
- 12 349efa14 00000000 ntdll!_RtlUserThreadStart+0x1b
- Dumping the exception
- Exception object: 1128b10c
- Exception type: System.Threading.ThreadAbortException
- Message: Thread was being aborted.
- InnerException: <none>
- StackTrace (generated):
- <none>
- StackTraceString: <none>
- HResult: 80131530
- The crash is due to cross context exception
- Looking at thread 42
- SP IP Function
- 34c2dd18 00000000 PrestubMethodFrame
- 34c2dd88 7093f57d System.Web.UI.Control.RenderChildrenInternal(System.Web.UI.HtmlTextWriter, System.Collections.ICollection)
- 34c2ddb4 7093f59e System.Web.UI.Control.RenderChildren(System.Web.UI.HtmlTextWriter)
- 34c2ddb8 7093f46d System.Web.UI.Control.Render(System.Web.UI.HtmlTextWriter)
- 34c2ddc0 7093f6c3 System.Web.UI.Control.RenderControlInternal(System.Web.UI.HtmlTextWriter, System.Web.UI.Adapters.ControlAdapter)
- 34c2dde8 7093f625 System.Web.UI.Control.RenderControl(System.Web.UI.HtmlTextWriter, System.Web.UI.Adapters.ControlAdapter)
- 34c2de08 7093f5ba System.Web.UI.Control.RenderControl(System.Web.UI.HtmlTextWriter)
- 34c2de18 1dc8ba6f ASP.app_masterpages_webnames4_5_master.__RenderphForm(System.Web.UI.HtmlTextWriter, System.Web.UI.Control)
- 34c2de28 7093f57d System.Web.UI.Control.RenderChildrenInternal(System.Web.UI.HtmlTextWriter, System.Collections.ICollection)
- 34c2de54 7093f59e System.Web.UI.Control.RenderChildren(System.Web.UI.HtmlTextWriter)
- 34c2de58 7093f46d System.Web.UI.Control.Render(System.Web.UI.HtmlTextWriter)
- 34c2de60 7093f6c3 System.Web.UI.Control.RenderControlInternal(System.Web.UI.HtmlTextWriter, System.Web.UI.Adapters.ControlAdapter)
- 34c2de88 7093f625 System.Web.UI.Control.RenderControl(System.Web.UI.HtmlTextWriter, System.Web.UI.Adapters.ControlAdapter)
- 34c2dea8 7093f5ba System.Web.UI.Control.RenderControl(System.Web.UI.HtmlTextWriter)
- 34c2deb8 7093f4f1 System.Web.UI.Control.RenderChildrenInternal(System.Web.UI.HtmlTextWriter, System.Collections.ICollection)
- 34c2dee4 7128f435 System.Web.UI.HtmlControls.HtmlForm.RenderChildren(System.Web.UI.HtmlTextWriter)
- 34c2df04 70950851 System.Web.UI.HtmlControls.HtmlContainerControl.Render(System.Web.UI.HtmlTextWriter)
- 34c2df14 7094e846 System.Web.UI.HtmlControls.HtmlForm.Render(System.Web.UI.HtmlTextWriter)
- 34c2df30 7093f6c3 System.Web.UI.Control.RenderControlInternal(System.Web.UI.HtmlTextWriter, System.Web.UI.Adapters.ControlAdapter)
- 34c2df58 7093f625 System.Web.UI.Control.RenderControl(System.Web.UI.HtmlTextWriter, System.Web.UI.Adapters.ControlAdapter)
- 34c2df78 7094ef59 System.Web.UI.HtmlControls.HtmlForm.RenderControl(System.Web.UI.HtmlTextWriter)
- 34c2df88 1dc8ac44 ASP.app_masterpages_webnames4_5_master.__Render__control1(System.Web.UI.HtmlTextWriter, System.Web.UI.Control)
- 34c2e4e4 7093f57d System.Web.UI.Control.RenderChildrenInternal(System.Web.UI.HtmlTextWriter, System.Collections.ICollection)
- 34c2e510 7093f59e System.Web.UI.Control.RenderChildren(System.Web.UI.HtmlTextWriter)
- 34c2e514 7093f46d System.Web.UI.Control.Render(System.Web.UI.HtmlTextWriter)
- 34c2e51c 7093f6c3 System.Web.UI.Control.RenderControlInternal(System.Web.UI.HtmlTextWriter, System.Web.UI.Adapters.ControlAdapter)
- 34c2e544 7093f625 System.Web.UI.Control.RenderControl(System.Web.UI.HtmlTextWriter, System.Web.UI.Adapters.ControlAdapter)
- 34c2e564 7093f5ba System.Web.UI.Control.RenderControl(System.Web.UI.HtmlTextWriter)
- 34c2e574 7093f4f1 System.Web.UI.Control.RenderChildrenInternal(System.Web.UI.HtmlTextWriter, System.Collections.ICollection)
- 34c2e5a0 7093f59e System.Web.UI.Control.RenderChildren(System.Web.UI.HtmlTextWriter)
- 34c2e5a4 708e7b7a System.Web.UI.Page.Render(System.Web.UI.HtmlTextWriter)
- 34c2e5b4 7093f6c3 System.Web.UI.Control.RenderControlInternal(System.Web.UI.HtmlTextWriter, System.Web.UI.Adapters.ControlAdapter)
- 34c2e5dc 7093f625 System.Web.UI.Control.RenderControl(System.Web.UI.HtmlTextWriter, System.Web.UI.Adapters.ControlAdapter)
- 34c2e5fc 7093f5ba System.Web.UI.Control.RenderControl(System.Web.UI.HtmlTextWriter)
- 34c2e60c 70947bf8 System.Web.UI.Page.ProcessRequestMain(Boolean, Boolean)
- 34c2e7bc 70947535 System.Web.UI.Page.ProcessRequest(Boolean, Boolean)
- 34c2e7f0 70947469 System.Web.UI.Page.ProcessRequest()
- 34c2e824 70947417 System.Web.UI.Page.ProcessRequestWithNoAssert(System.Web.HttpContext)
- 34c2e830 709473fb System.Web.UI.Page.ProcessRequest(System.Web.HttpContext)
- 34c2e844 34e5f575 ASP.about_press_releases_press_release_021505_aspx.ProcessRequest(System.Web.HttpContext)
- 34c2e848 7094a58d System.Web.HttpApplication+CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
- 34c2e88c 7091fad6 System.Web.HttpApplication.ExecuteStep(IExecutionStep, Boolean ByRef)
- 34c2e8cc 7092dcfb System.Web.HttpApplication+PipelineStepManager.ResumeSteps(System.Exception)
- 34c2e9b0 70920440 System.Web.HttpApplication.BeginProcessRequestNotification(System.Web.HttpContext, System.AsyncCallback)
- 34c2e9c8 7092c822 System.Web.HttpRuntime.ProcessRequestNotificationPrivate(System.Web.Hosting.IIS7WorkerRequest, System.Web.HttpContext)
- 34c2ea18 709212a0 System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper(IntPtr, IntPtr, IntPtr, Int32)
- 34c2ea1c 00000000 InlinedCallFrame
- 34c2eb0c 70920f8f System.Web.Hosting.PipelineRuntime.ProcessRequestNotification(IntPtr, IntPtr, IntPtr, Int32)
- 34c2effc 00000000 InlinedCallFrame
- 34c2eff8 70974a0d DomainNeutralILStubClass.IL_STUB_PInvoke(IntPtr, System.Web.RequestNotificationStatus ByRef)
- 34c2effc 00000000 InlinedCallFrame
- 34c2f030 70921443 System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper(IntPtr, IntPtr, IntPtr, Int32)
- 34c2f034 00000000 InlinedCallFrame
- 34c2f124 70920f8f System.Web.Hosting.PipelineRuntime.ProcessRequestNotification(IntPtr, IntPtr, IntPtr, Int32)
- 34c2f1fc 00000000 ContextTransitionFrame
- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- Dumping the native stack:
- # ChildEBP RetAddr
- 00 34c2d498 6758b217 clrjit!Compiler::fgComputeLife+0x4e8
- 01 34c2d4e8 67589150 clrjit!Compiler::fgGlobalDataFlow+0x218
- 02 34c2d500 6758c433 clrjit!Compiler::compCompile+0x418
- 03 34c2d538 6758c890 clrjit!Compiler::compCompileHelper+0x2ff
- 04 34c2d5b0 6758bf5b clrjit!Compiler::compCompile+0x236
- 05 34c2d6a8 6758128b clrjit!jitNativeCode+0x1e9
- 06 34c2d6cc 73caab7b clrjit!CILJit::compileMethod+0x25
- 07 34c2d720 73cabf17 clr!invokeCompileMethodHelper+0xe0
- 08 34c2d760 73cabf5c clr!invokeCompileMethod+0x34
- 09 34c2d7cc 73cab87f clr!CallCompileMethodWithSEHWrapper+0x2d
- 0a 34c2db84 73cabb54 clr!UnsafeJitFunction+0x3dd
- 0b 34c2dc68 73cacac0 clr!MethodDesc::MakeJitWorker+0x398
- 0c 34c2dce0 73c9fe83 clr!MethodDesc::DoPrestub+0x5fc
- 0d 34c2dd58 73bd17f5 clr!PreStubWorker+0xe2
- 0e 34c2dd7c 7093f57d clr!ThePreStub+0x11
- 0f 34c2dda8 7093f59e System_Web_ni!System.Web.UI.Control.RenderChildrenInternal(System.Web.UI.HtmlTextWriter, System.Collections.ICollection)+0x10d
- 10 34c2ddb8 7093f46d System_Web_ni!System.Web.UI.Control.RenderChildren(System.Web.UI.HtmlTextWriter)+0xe
- 11 34c2ddb8 7093f6c3 System_Web_ni!System.Web.UI.Control.Render(System.Web.UI.HtmlTextWriter)+0xd
- 12 34c2dddc 7093f625 System_Web_ni!System.Web.UI.Control.RenderControlInternal(System.Web.UI.HtmlTextWriter, System.Web.UI.Adapters.ControlAdapter)+0x43
- 13 34c2ddfc 7093f5ba System_Web_ni!System.Web.UI.Control.RenderControl(System.Web.UI.HtmlTextWriter, System.Web.UI.Adapters.ControlAdapter)+0x65
- 14 34c2de10 1dc8ba6f System_Web_ni!System.Web.UI.Control.RenderControl(System.Web.UI.HtmlTextWriter)+0x1a
- 15 34c2de1c 7093f57d App_Web_e0xyxym0!ASP.app_masterpages_webnames4_5_master.__RenderphForm(System.Web.UI.HtmlTextWriter, System.Web.UI.Control)+0x6f
- 16 34c2de48 7093f59e System_Web_ni!System.Web.UI.Control.RenderChildrenInternal(System.Web.UI.HtmlTextWriter, System.Collections.ICollection)+0x10d
- 17 34c2ddb8 7093f46d System_Web_ni!System.Web.UI.Control.RenderChildren(System.Web.UI.HtmlTextWriter)+0xe
- 18 34c2ddb8 7093f6c3 System_Web_ni!System.Web.UI.Control.Render(System.Web.UI.HtmlTextWriter)+0xd
- 19 34c2dddc 7093f625 System_Web_ni!System.Web.UI.Control.RenderControlInternal(System.Web.UI.HtmlTextWriter, System.Web.UI.Adapters.ControlAdapter)+0x43
- 1a 34c2ddfc 7093f5ba System_Web_ni!System.Web.UI.Control.RenderControl(System.Web.UI.HtmlTextWriter, System.Web.UI.Adapters.ControlAdapter)+0x65
- 1b 34c2de10 1dc8ba6f System_Web_ni!System.Web.UI.Control.RenderControl(System.Web.UI.HtmlTextWriter)+0x1a
- <Trimmed due to recursion>
- f5 34c2de1c 7093f57d App_Web_e0xyxym0!ASP.app_masterpages_webnames4_5_master.__RenderphForm(System.Web.UI.HtmlTextWriter, System.Web.UI.Control)+0x6f
- f6 34c2de48 7093f59e System_Web_ni!System.Web.UI.Control.RenderChildrenInternal(System.Web.UI.HtmlTextWriter, System.Collections.ICollection)+0x10d
- f7 34c2ddb8 7093f46d System_Web_ni!System.Web.UI.Control.RenderChildren(System.Web.UI.HtmlTextWriter)+0xe
- f8 34c2ddb8 7093f6c3 System_Web_ni!System.Web.UI.Control.Render(System.Web.UI.HtmlTextWriter)+0xd
- f9 34c2dddc 7093f625 System_Web_ni!System.Web.UI.Control.RenderControlInternal(System.Web.UI.HtmlTextWriter, System.Web.UI.Adapters.ControlAdapter)+0x43
- fa 34c2ddfc 7093f5ba System_Web_ni!System.Web.UI.Control.RenderControl(System.Web.UI.HtmlTextWriter, System.Web.UI.Adapters.ControlAdapter)+0x65
- fb 34c2de10 1dc8ba6f System_Web_ni!System.Web.UI.Control.RenderControl(System.Web.UI.HtmlTextWriter)+0x1a
- fc 34c2de1c 7093f57d App_Web_e0xyxym0!ASP.app_masterpages_webnames4_5_master.__RenderphForm(System.Web.UI.HtmlTextWriter, System.Web.UI.Control)+0x6f
- fd 34c2de48 7093f59e System_Web_ni!System.Web.UI.Control.RenderChildrenInternal(System.Web.UI.HtmlTextWriter, System.Collections.ICollection)+0x10d
- fe 34c2ddb8 7093f46d System_Web_ni!System.Web.UI.Control.RenderChildren(System.Web.UI.HtmlTextWriter)+0xe
- ff 34c2ddb8 7093f6c3 System_Web_ni!System.Web.UI.Control.Render(System.Web.UI.HtmlTextWriter)+0xd
- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- Dumping the code:
- private void __RenderphForm(HtmlTextWriter __w, Control parameterContainer)
- {
- __w.Write(this.get_MyBasePage().HiddenSessionID());
- __w.Write("\r\n \r\n <div id=\"contentwrap\">\r\n ");
- parameterContainer.Controls[0].RenderControl(__w);
- __w.Write("\r\n <br />\r\n <br />\r\n </div>\r\n <!-- /#contentwrap -->\r\n ");
- }
- The above code is going under recursion and causing w3wp to crash
- ===============================================================================================================================
- Action Plan:
- We need to engage the developer to look into this further and why it’s going under recursion and causing stack overflow
- private void __RenderphForm(HtmlTextWriter __w, Control parameterContainer)
- {
- __w.Write(this.get_MyBasePage().HiddenSessionID());
- __w.Write("\r\n \r\n <div id=\"contentwrap\">\r\n ");
- parameterContainer.Controls[0].RenderControl(__w);
- __w.Write("\r\n <br />\r\n <br />\r\n </div>\r\n <!-- /#contentwrap -->\r\n ");
- }
- ================================================================================================================================
- With Regards,
- From: Jordan Rieger [mailto:jordan@webnames.ca]
- Sent: Saturday, October 9, 2015 4:19 AM
- To: Microsoft Support
- Subject: RE: [REG:MS Support Request #] Intermittent crash of w3wp.exe with ThreadAbortException- Action plan
- Hi,
- I have uploaded a .zip file containing 9 dumps that the Debug Diagnostic tool generated. Please investigate and advise.
- Jordan
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement