Copied to clipboard

Flag this post as spam?

This post will be reported to the moderators as potential spam to be looked at


  • kristian schneider 190 posts 351 karma points
    Oct 29, 2009 @ 15:52
    kristian schneider
    0

    StackOverflowException causes IIS to crash

    Hi mighty everyone.

    We have an appliaction that is causing the IIS to brake down on our production system, on the development system this does not seem to occure. We do not quite know what exactly is causing this but I've done some debugging via memorydumps. The problem is that the error is not show in a yellow screen of death, but the IIS simply stops the process and restarts.

    By using the Adplus script in the microsoft debugging tool kit i've manged to create memory dumps at the time the exception is thown.

    Then analysing the memorydump with windbg i've come up with the following stack trace:

     

    0:027> !clrstack
    OS Thread Id: 0x4718 (27)
    Child-SP RetAddr Call Site
    0000000002de84a0 000007fef47955f8 System.Globalization.CompareInfo.IndexOf(System.String, System.String, Int32, Int32, System.Globalization.CompareOptions)
    0000000002de8520 000007fee5ddca15 System.Globalization.CompareInfo.IndexOf(System.String, System.String, System.Globalization.CompareOptions)
    0000000002de8570 000007ff01496f48 System.Xml.Xsl.Runtime.XsltFunctions.SubstringBefore(System.String, System.String)
    0000000002de85b0 000007ff014ded00 UNKNOWN
    0000000002dfc520 000007ff014ded00 UNKNOWN
    0000000002e10490 000007ff014ded00 UNKNOWN
    0000000002e24400 000007ff014ded00 UNKNOWN
    0000000002e38370 000007ff009e802f UNKNOWN
    0000000002e4c2e0 000007ff009e17a1 UNKNOWN
    0000000002e4dd70 000007ff009e15e1 UNKNOWN
    0000000002e4dee0 000007ff009e0379 UNKNOWN
    0000000002e4df40 000007fee5d96966 UNKNOWN
    0000000002e4df80 000007fee5d96b28 System.Xml.Xsl.XmlILCommand.Execute(System.Object, System.Xml.XmlResolver, System.Xml.Xsl.XsltArgumentList, System.Xml.XmlWriter, Boolean)
    0000000002e4e000 000007fef591d039 System.Xml.Xsl.XmlILCommand.Execute(System.Xml.XPath.IXPathNavigable, System.Xml.XmlResolver, System.Xml.Xsl.XsltArgumentList, System.Xml.XmlWriter)
    0000000002e4e060 000007ff00328cd4 System.Xml.Xsl.XslCompiledTransform.Transform(System.Xml.XPath.IXPathNavigable, System.Xml.Xsl.XsltArgumentList, System.IO.TextWriter)
    0000000002e4e0c0 000007ff00328205 umbraco.macro.GetXsltTransformResult(System.Xml.XmlDocument, System.Xml.Xsl.XslCompiledTransform, System.Collections.Generic.Dictionary`2<System.String,System.Object>)
    0000000002e4e1c0 000007ff00326be1 umbraco.macro.loadMacroXSLT(umbraco.macro, System.Collections.Hashtable, System.Collections.Hashtable)
    0000000002e4e2e0 000007ff00324fe9 umbraco.macro.renderMacro(System.Collections.Hashtable, System.Collections.Hashtable, Int32)
    0000000002e4e410 000007fef2e5e802 umbraco.presentation.templateControls.Macro.CreateChildControls()
    0000000002e4e4a0 000007ff00324ccc System.Web.UI.Control.EnsureChildControls()
    0000000002e4e500 000007fef2e5cd2f umbraco.presentation.templateControls.Macro.OnInit(System.EventArgs)
    0000000002e4e530 000007fef2e5ce27 System.Web.UI.Control.InitRecursive(System.Web.UI.Control)
    0000000002e4e590 000007fef2e5ce27 System.Web.UI.Control.InitRecursive(System.Web.UI.Control)
    0000000002e4e5f0 000007fef2e5ce27 System.Web.UI.Control.InitRecursive(System.Web.UI.Control)
    0000000002e4e650 000007fef2e5ce27 System.Web.UI.Control.InitRecursive(System.Web.UI.Control)
    0000000002e4e6b0 000007fef2e5ce27 System.Web.UI.Control.InitRecursive(System.Web.UI.Control)
    0000000002e4e710 000007fef2e5ce27 System.Web.UI.Control.InitRecursive(System.Web.UI.Control)
    0000000002e4e770 000007fef2e5ce27 System.Web.UI.Control.InitRecursive(System.Web.UI.Control)
    0000000002e4e7d0 000007fef2e59615 System.Web.UI.Control.InitRecursive(System.Web.UI.Control)
    0000000002e4e830 000007fef2e58ed0 System.Web.UI.Page.ProcessRequestMain(Boolean, Boolean)
    0000000002e4e900 000007fef2e58dfb System.Web.UI.Page.ProcessRequest(Boolean, Boolean)
    0000000002e4e960 000007fef2e58d90 System.Web.UI.Page.ProcessRequest()
    0000000002e4e9c0 000007ff00319004 System.Web.UI.Page.ProcessRequest(System.Web.HttpContext)
    0000000002e4ea20 000007fef2e60237 ASP.default_aspx.ProcessRequest(System.Web.HttpContext)
    0000000002e4ea50 000007fef2e245bb System.Web.HttpApplication+CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
    0000000002e4eb00 000007fef2e32335 System.Web.HttpApplication.ExecuteStep(IExecutionStep, Boolean ByRef)
    0000000002e4eba0 000007fef2e23673 System.Web.HttpApplication+ApplicationStepManager.ResumeSteps(System.Exception)
    0000000002e4ec50 000007fef2e27994 System.Web.HttpApplication.System.Web.IHttpAsyncHandler.BeginProcessRequest(System.Web.HttpContext, System.AsyncCallback, System.Object)
    0000000002e4ecb0 000007fef2e2757c System.Web.HttpRuntime.ProcessRequestInternal(System.Web.HttpWorkerRequest)
    0000000002e4ed40 000007fef2e261ac System.Web.HttpRuntime.ProcessRequestNoDemand(System.Web.HttpWorkerRequest)
    0000000002e4ed80 000007fef64f1802 System.Web.Hosting.ISAPIRuntime.ProcessRequest(IntPtr, Int32)

    The question is of course what is causing the exception. It seems to be related to XSLT somehow but I cant figure out where the culprit is.

    Any input is appreciated.

  • kristian schneider 190 posts 351 karma points
    Oct 30, 2009 @ 11:01
    kristian schneider
    2

    We found the problem!

    The problem was caused by a recursive xsl:template. This template was quite large and after 4 calls the stack was filled up.

    The substringbefore() methods basicly was the one causing the drop that spilled the cup.

    Bonus info: the stack size of a asp.net thread is 256kb

     

     

Please Sign in or register to post replies

Write your reply to:

Draft