Question

J'ai donc un vilain débordement de pile que j'essaie de localiser / de résoudre depuis environ 8 heures et je suis sur le point d'avoir besoin de conseils.

Les détails: Il est intéressant de noter que ce code fonctionne correctement lorsqu'il est appelé dans le cadre de notre application winforms habituelle - mais je suis chargé d'écrire une version Web de notre logiciel, et ce même code exact provoque le débordement de pile lorsqu'il est appelé à partir d'une page ASPX en cours d'exécution sur IIS. La première chose que j'ai faite a été d’attacher et d’essayer le débogage .NET normal via Visual Studio. Au point de l'exception, la pile d'appels semblait relativement peu profonde (environ 11 images de profondeur dans notre code) et je n'ai trouvé aucun des suspects habituels sur un débordement de pile (mauvaise récursivité, constructeurs auto-appelants, boucles d'exception). / p>

Je me suis donc résigné à sortir windbg et S.O.S. - ce que je sais peut être utile pour ce genre de chose, bien que j'en ai eu une expérience limitée moi-même. Après des heures de singe, je pense disposer de données utiles, mais j'ai besoin d'aide pour les analyser.

La première place est un! dumpstack que j’ai pris alors que j’étais cassé juste avant le débordement de la pile.

0:015> !dumpstack
PDB symbol for mscorwks.dll not loaded
OS Thread Id: 0x1110 (15)
Current frame: ntdll!KiFastSystemCallRet
ChildEBP RetAddr  Caller,Callee
01d265a8 7c827d0b ntdll!NtWaitForSingleObject+0xc
01d265ac 77e61d1e kernel32!WaitForSingleObjectEx+0x88, calling ntdll!NtWaitForSingleObject
01d2661c 79e789c6 mscorwks!LogHelp_NoGuiOnAssert+0x58ca
01d26660 79e7898f mscorwks!LogHelp_NoGuiOnAssert+0x5893, calling mscorwks!LogHelp_NoGuiOnAssert+0x589b
01d26680 79e734c4 mscorwks!LogHelp_NoGuiOnAssert+0x3c8, calling mscorwks+0x17c0
01d26694 79fc1d6b mscorwks!CorExeMain+0x8724, calling kernel32!InterlockedDecrement
01d26698 79ef3892 mscorwks!GetCLRFunction+0x107de, calling mscorwks+0x17c0
01d266b0 79e78944 mscorwks!LogHelp_NoGuiOnAssert+0x5848, calling mscorwks!LogHelp_NoGuiOnAssert+0x584c
01d266c4 7a14de5d mscorwks!CorLaunchApplication+0x2f243, calling mscorwks!LogHelp_NoGuiOnAssert+0x5831
01d266ec 77e61d1e kernel32!WaitForSingleObjectEx+0x88, calling ntdll!NtWaitForSingleObject
01d266f8 77e61d43 kernel32!WaitForSingleObjectEx+0xad, calling kernel32!GetTickCount+0x73
01d26714 7c8279bb ntdll!NtSetEvent+0xc
01d26718 77e62321 kernel32!SetEvent+0x10, calling ntdll!NtSetEvent
01d26748 7a14df79 mscorwks!CorLaunchApplication+0x2f35f, calling mscorwks!CorLaunchApplication+0x2f17c
01d2675c 7a022dde mscorwks!NGenCreateNGenWorker+0x4516b, calling mscorwks!CorLaunchApplication+0x2f347
01d26770 79fbc685 mscorwks!CorExeMain+0x303e, calling mscorwks+0x1bbe
01d26788 79e734c4 mscorwks!LogHelp_NoGuiOnAssert+0x3c8, calling mscorwks+0x17c0
01d2678c 79e734f2 mscorwks!LogHelp_NoGuiOnAssert+0x3f6, calling mscorwks!LogHelp_NoGuiOnAssert+0x380
01d267a8 7a2d259e mscorwks!CreateHistoryReader+0xafd3
01d267b4 7a2e6292 mscorwks!CreateHistoryReader+0x1ecc7, calling mscorwks!CreateHistoryReader+0xaf9d
01d26814 7a064d52 mscorwks!NGenCreateNGenWorker+0x870df, calling mscorwks!CreateHistoryReader+0x1eb43
01d26854 79f91643 mscorwks!ClrCreateManagedInstance+0x46ff, calling mscorwks!ClrCreateManagedInstance+0x4720
01d2688c 79f915c4 mscorwks!ClrCreateManagedInstance+0x4680
01d268b4 79e734c4 mscorwks!LogHelp_NoGuiOnAssert+0x3c8, calling mscorwks+0x17c0
01d268cc 79f04e98 mscorwks!GetCLRFunction+0x21de4, calling mscorwks!GetCLRFunction+0x21e4b
01d26900 79f0815e mscorwks!GetCLRFunction+0x250aa, calling mscorwks!GetCLRFunction+0x21d35
01d2691c 7c858135 ntdll!RtlIpv4StringToAddressExW+0x167b7, calling ntdll!RtlReleaseResource
01d2692c 79f080a7 mscorwks!GetCLRFunction+0x24ff3, calling mscorwks!GetCLRFunction+0x25052
01d26950 7c828752 ntdll!RtlRaiseStatus+0xe0
01d26974 7c828723 ntdll!RtlRaiseStatus+0xb1, calling ntdll!RtlRaiseStatus+0xba
01d26998 7c8315c2 ntdll!RtlSubtreePredecessor+0x208, calling ntdll!RtlRaiseStatus+0x7e
01d26a1c 7c82855e ntdll!KiUserExceptionDispatcher+0xe, calling ntdll!RtlSubtreePredecessor+0x17c
01d26d20 13380333 (MethodDesc 0x10936710 +0x243 ASI.ParadigmPlus.LoadedWindows.WID904.QuestionChangeLogic(ASI.ParadigmPlus.Question, ASI.ParadigmPlus.Question)) ====> Exception Code 0 cxr@1d26a54 exr@1d26000
01d26bd8 77e64590 kernel32!VirtualAllocEx+0x4b, calling kernel32!GetTickCount+0x73
01d26bec 7c829f59 ntdll!RtlFreeHeap+0x142, calling ntdll!CIpow+0x464
01d26bf0 79e78d11 mscorwks!LogHelp_NoGuiOnAssert+0x5c15, calling ntdll!RtlFreeHeap
01d3e86c 103b4064 (MethodDesc 0xf304c90 +0x174 ASI.ParadigmPlus.Window.TrackQuestionChange(ASI.ParadigmPlus.Question, ASI.ParadigmPlus.Answer))
01d3e88c 103b4064 (MethodDesc 0xf304c90 +0x174 ASI.ParadigmPlus.Window.TrackQuestionChange(ASI.ParadigmPlus.Question, ASI.ParadigmPlus.Answer))
01d3e8b0 103b3e6b (MethodDesc 0xebb4b38 +0x23 ASI.CommonLibrary.ASIArrayList3.get_Item(Int32))
01d3e8d4 103b3d70 (MethodDesc 0xf304e98 +0x1b0 ASI.ParadigmPlus.Window.TrackQuestionChange())
01d3e910 0f90febf (MethodDesc 0xf30d250 +0x190f ASI.ParadigmPlus.Data.RemoteDataAccess.GetWindow(Int32))
01d3ec0c 10a2a572 (MethodDesc 0x10935aa0 +0x1f2 ASI.ParadigmPlus.LoadedWindowSets.WSID904.ApplyLayoutChanges()), calling 02259472
01d3ecec 0f90c880 (MethodDesc 0xebb91f8 +0xe8 ASI.ParadigmPlus.Windowset.ApplyLayoutChangesWrap())
01d3ed0c 0f90c880 (MethodDesc 0xebb91f8 +0xe8 ASI.ParadigmPlus.Windowset.ApplyLayoutChangesWrap())
01d3ed54 0f4d2388 (MethodDesc 0x22261a0 +0x5e8 WebConfigurator.NewDefault.ProductSelectedIndexChange(Int32, Int32))
01d3f264 0f4d1d7f (MethodDesc 0x2226180 +0x47 WebConfigurator.NewDefault.btnGo_Click1(System.Object, System.EventArgs)), calling (MethodDesc 0x22261a0 +0 WebConfigurator.NewDefault.ProductSelectedIndexChange(Int32, Int32))
01d3f284 0e810a05 (MethodDesc 0x22260f8 +0x145 WebConfigurator.NewDefault.Page_Load(System.Object, System.EventArgs)), calling (MethodDesc 0x2226180 +0 WebConfigurator.NewDefault.btnGo_Click1(System.Object, System.EventArgs))
01d3f2a8 793ae896 (MethodDesc 0x79256848 +0x52 System.MulticastDelegate.RemoveImpl(System.Delegate))
01d3f2ac 79e7bee8 mscorwks!LogHelp_TerminateOnAssert+0x2bd0, calling mscorwks!LogHelp_TerminateOnAssert+0x2b60
01d3f2c4 66f12980 (MethodDesc 0x66f1bcd0 +0x10 System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr, System.Object, System.Object, System.EventArgs))
01d3f2d0 6628efd2 (MethodDesc 0x66474328 +0x22 System.Web.Util.CalliEventHandlerDelegateProxy.Callback(System.Object, System.EventArgs)), calling (MethodDesc 0x66f1bcd0 +0 System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr, System.Object, System.Object, System.EventArgs))
01d3f2e4 6613cb04 (MethodDesc 0x66468a58 +0x64 System.Web.UI.Control.OnLoad(System.EventArgs))
01d3f2f8 6613cb50 (MethodDesc 0x66468a60 +0x30 System.Web.UI.Control.LoadRecursive())
01d3f30c 6614e12d (MethodDesc 0x66467688 +0x59d System.Web.UI.Page.ProcessRequestMain(Boolean, Boolean))
01d3f4e0 6614c717 (MethodDesc 0x66467430 +0x63 System.Web.UI.Page.AddWrappedFileDependencies(System.Object)), calling (MethodDesc 0x66478de8 +0 System.Web.ResponseDependencyList.AddDependencies(System.String[], System.String, Boolean, System.String))
01d3f504 6614d8c3 (MethodDesc 0x66467650 +0x67 System.Web.UI.Page.ProcessRequest(Boolean, Boolean)), calling (MethodDesc 0x66467688 +0 System.Web.UI.Page.ProcessRequestMain(Boolean, Boolean))
01d3f528 79371311 (MethodDesc 0x7925ac80 +0x25 System.Globalization.CultureInfo.get_UserDefaultUICulture()), calling  (JitHelp: CORINFO_HELP_GETSHARED_GCSTATIC_BASE)
01d3f53c 6614d80f (MethodDesc 0x66467648 +0x57 System.Web.UI.Page.ProcessRequest()), calling (MethodDesc 0x66467650 +0 System.Web.UI.Page.ProcessRequest(Boolean, Boolean))
01d3f560 6615055c (MethodDesc 0x664676f0 +0x184 System.Web.UI.Page.SetIntrinsics(System.Web.HttpContext, Boolean)), calling (MethodDesc 0x664726b0 +0 System.Web.UI.TemplateControl.HookUpAutomaticHandlers())
01d3f578 6614d72f (MethodDesc 0x66467630 +0x13 System.Web.UI.Page.ProcessRequestWithNoAssert(System.Web.HttpContext)), calling (MethodDesc 0x66467648 +0 System.Web.UI.Page.ProcessRequest())
01d3f580 6614d6c2 (MethodDesc 0x66467620 +0x32 System.Web.UI.Page.ProcessRequest(System.Web.HttpContext)), calling (MethodDesc 0x66467630 +0 System.Web.UI.Page.ProcessRequestWithNoAssert(System.Web.HttpContext))
01d3f594 0e810206 (MethodDesc 0x22265a0 +0x1e ASP.newdefault_aspx.ProcessRequest(System.Web.HttpContext)), calling (MethodDesc 0x66467620 +0 System.Web.UI.Page.ProcessRequest(System.Web.HttpContext))
01d3f5a0 65fe6bfb (MethodDesc 0x66470fc0 +0x167 System.Web.HttpApplication+CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()), calling 01dee5da
01d3f5d4 65fe3f51 (MethodDesc 0x6642f090 +0x41 System.Web.HttpApplication.ExecuteStep(IExecutionStep, Boolean ByRef)), calling 01de7d0a
01d3f610 65fe7733 (MethodDesc 0x66470cd0 +0x1b3 System.Web.HttpApplication+ApplicationStepManager.ResumeSteps(System.Exception)), calling (MethodDesc 0x6642f090 +0 System.Web.HttpApplication.ExecuteStep(IExecutionStep, Boolean ByRef))
01d3f64c 7939eef2 (MethodDesc 0x7925eda8 +0x26 System.Runtime.InteropServices.GCHandle.Alloc(System.Object)), calling mscorwks!InstallCustomModule+0x1e8d
01d3f664 65fccbfe (MethodDesc 0x6642ebb0 +0x8e System.Web.HttpApplication.System.Web.IHttpAsyncHandler.BeginProcessRequest(System.Web.HttpContext, System.AsyncCallback, System.Object))
01d3f678 65fd19c5 (MethodDesc 0x6642cde8 +0x1b5 System.Web.HttpRuntime.ProcessRequestInternal(System.Web.HttpWorkerRequest)), calling 01de7cba
01d3f69c 7938111c (MethodDesc 0x79262df0 +0xc System.DateTime.get_UtcNow()), calling mscorwks!GetCLRFunction+0x109f9
01d3f6a4 01c32cbc 01c32cbc, calling 01daa248
01d3f6b4 65fd16b2 (MethodDesc 0x664619e0 +0x62 System.Web.HttpRuntime.ProcessRequestNoDemand(System.Web.HttpWorkerRequest)), calling (MethodDesc 0x6642cde8 +0 System.Web.HttpRuntime.ProcessRequestInternal(System.Web.HttpWorkerRequest))
01d3f6c0 65fcfa6d (MethodDesc 0x6642d4a0 +0xfd System.Web.Hosting.ISAPIRuntime.ProcessRequest(IntPtr, Int32)), calling (MethodDesc 0x664619e0 +0 System.Web.HttpRuntime.ProcessRequestNoDemand(System.Web.HttpWorkerRequest))
01d3f6d8 65fcf9f4 (MethodDesc 0x6642d4a0 +0x84 System.Web.Hosting.ISAPIRuntime.ProcessRequest(IntPtr, Int32)), calling *** ERROR: Symbol file could not be found.  Defaulted to export symbols for \\?\C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\webengine.dll - 
webengine!GetEcb
01d3f710 79f047fd mscorwks!GetCLRFunction+0x21749
01d3f720 01c32cbc 01c32cbc, calling 01daa248
01d3f730 79f047fd mscorwks!GetCLRFunction+0x21749
01d3f75c 79f01621 mscorwks!GetCLRFunction+0x1e56d, calling mscorwks+0x1b86
01d3f770 79ef98cf mscorwks!GetCLRFunction+0x1681b, calling mscorwks!GetCLRFunction+0x1682f
01d3f7d0 79e74f98 mscorwks!LogHelp_NoGuiOnAssert+0x1e9c, calling mscorwks!LogHelp_NoGuiOnAssert+0x1ec1
01d3f7e8 79f0462c mscorwks!GetCLRFunction+0x21578, calling mscorwks!GetCLRFunction+0x215b0
01d3f7f8 01c32cbc 01c32cbc, calling 01daa248
01d3f844 79f044fa mscorwks!GetCLRFunction+0x21446, calling mscorwks!GetCLRFunction+0x21541
01d3f854 01c32cbc 01c32cbc, calling 01daa248
01d3f898 660167e9 (MethodDesc 0x6646f6b0 +0x5 System.Web.RequestQueue.TimerCompletionCallback(System.Object)), calling (MethodDesc 0x6646f698 +0 System.Web.RequestQueue.ScheduleMoreWorkIfNeeded())
01d3f89c 793af6c6 (MethodDesc 0x792672b0 +0x1a System.Threading._TimerCallback.TimerCallback_Context(System.Object))
01d3f8b4 793af647 (MethodDesc 0x7914fc18 +0x5b System.Threading._TimerCallback.PerformTimerCallback(System.Object)), calling (MethodDesc 0x7914e0d8 +0 System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object))
01d3f8b8 793af654 (MethodDesc 0x7914fc18 +0x68 System.Threading._TimerCallback.PerformTimerCallback(System.Object)), calling mscorwks!LogHelp_TerminateOnAssert
01d3f8f8 79e74466 mscorwks!LogHelp_NoGuiOnAssert+0x136a, calling mscorwks+0x1813
01d3f8fc 79e7c709 mscorwks!LogHelp_TerminateOnAssert+0x33f1, calling mscorwks!LogHelp_NoGuiOnAssert+0x1360
01d3f964 7c829f3d ntdll!RtlFreeHeap+0x126, calling ntdll!RtlGetNtGlobalFlags+0x12
01d3f96c 7c829f59 ntdll!RtlFreeHeap+0x142, calling ntdll!CIpow+0x464
01d3f9ac 6a2a9998 webengine!CSharelock::ChangeExclusiveLockToSharedLock+0x2d, calling kernel32!InterlockedCompareExchange
01d3f9b4 6a2ab03b webengine!EcbGetUnicodeServerVariables+0x3d5, calling kernel32!InterlockedIncrement
01d3f9f4 01c32cbc 01c32cbc, calling 01daa248
01d3fa28 01daa295 01daa295, calling mscorwks!GetCLRFunction+0x2119e
01d3fa50 6a2aa63f webengine!CookieAuthConstructTicket+0x232
01d3fa6c 01c32cbc 01c32cbc, calling 01daa248
01d3fa70 6a2aa63f webengine!CookieAuthConstructTicket+0x232
01d3fac8 79e734c4 mscorwks!LogHelp_NoGuiOnAssert+0x3c8, calling mscorwks+0x17c0
01d3facc 79e734f2 mscorwks!LogHelp_NoGuiOnAssert+0x3f6, calling mscorwks!LogHelp_NoGuiOnAssert+0x380
01d3fad8 79f00c03 mscorwks!GetCLRFunction+0x1db4f, calling mscorwks!LogHelp_NoGuiOnAssert+0xf0
01d3fadc 79e71b90 mscorwks+0x1b90, calling mscorwks+0x1813
01d3fae0 79f00c0b mscorwks!GetCLRFunction+0x1db57, calling mscorwks+0x1b86
01d3fb1c 79ef30c3 mscorwks!GetCLRFunction+0x1000f, calling mscorwks!GetCLRFunction+0x10040
01d3fb64 79f00c0b mscorwks!GetCLRFunction+0x1db57, calling mscorwks+0x1b86
01d3fb68 79f02a93 mscorwks!GetCLRFunction+0x1f9df, calling mscorwks!GetCLRFunction+0x1d8e5
01d3fb70 79e71b90 mscorwks+0x1b90, calling mscorwks+0x1813
01d3fb74 79f02aa7 mscorwks!GetCLRFunction+0x1f9f3, calling mscorwks+0x1b86
01d3fb88 79f00e8d mscorwks!GetCLRFunction+0x1ddd9, calling mscorwks+0x18bb
01d3fb8c 79f00f03 mscorwks!GetCLRFunction+0x1de4f, calling mscorwks!GetCLRFunction+0x1dd84
01d3fbc0 79f02978 mscorwks!GetCLRFunction+0x1f8c4, calling mscorwks!GetCLRFunction+0x1de1a
01d3fbfc 79e73220 mscorwks!LogHelp_NoGuiOnAssert+0x124, calling  (JitHelp: CORINFO_HELP_GET_THREAD)
01d3fc08 79ef2884 mscorwks!GetCLRFunction+0xf7d0, calling mscorwks!LogHelp_NoGuiOnAssert+0x118
01d3fc0c 79ef28ab mscorwks!GetCLRFunction+0xf7f7, calling mscorwks+0x17c0
01d3fc24 79e7904f mscorwks!LogHelp_NoGuiOnAssert+0x5f53, calling mscorwks+0x1b95
01d3fc38 79ef31ca mscorwks!GetCLRFunction+0x10116, calling mscorwks!LogHelp_NoGuiOnAssert+0x5f3d
01d3fc3c 79e71b90 mscorwks+0x1b90, calling mscorwks+0x1813
01d3fc40 79ef31d9 mscorwks!GetCLRFunction+0x10125, calling mscorwks+0x1b86
01d3fc90 7c829fb5 ntdll!RtlGetNtGlobalFlags+0x38, calling ntdll!ExpInterlockedPopEntrySListEnd+0x11
01d3fc94 7c827d0b ntdll!NtWaitForSingleObject+0xc
01d3fc98 77e61d1e kernel32!WaitForSingleObjectEx+0x88, calling ntdll!NtWaitForSingleObject
01d3fca4 77e61d43 kernel32!WaitForSingleObjectEx+0xad, calling kernel32!GetTickCount+0x73
01d3fdb4 6a2aa748 webengine!CookieAuthConstructTicket+0x33b, calling webengine!CookieAuthConstructTicket+0x11d
01d3fdc4 6a2aa715 webengine!CookieAuthConstructTicket+0x308
01d3fddc 79f024cf mscorwks!GetCLRFunction+0x1f41b
01d3fdf4 79ef3a3f mscorwks!GetCLRFunction+0x1098b, calling mscorwks+0x17c0
01d3fe28 79f0202a mscorwks!GetCLRFunction+0x1ef76
01d3fe3c 79f021a0 mscorwks!GetCLRFunction+0x1f0ec, calling mscorwks!GetCLRFunction+0x1eef9
01d3fe94 79fc9840 mscorwks!CorExeMain+0x101f9
01d3ffa4 79fc982e mscorwks!CorExeMain+0x101e7, calling mscorwks!LogHelp_NoGuiOnAssert+0x61c0
01d3ffb8 77e64829 kernel32!GetModuleHandleA+0xdf

Beaucoup de choses là-bas, mais rien qui dans ma pile (certes limité) analysant les connaissances indique une boucle. Je pense que cette section suivante pourrait cependant avoir une certaine valeur. C'est un! Dumpstackobjects que j'ai au même point d'arrêt:

0:000> ~16e !dumpstackobjects
OS Thread Id: 0x172c (16)
ESP/REG  Object   Name
01d0ee30 0295ef60 ASI.ParadigmPlus.LoadedWindows.WID904
01d0ef68 0295ef60 ASI.ParadigmPlus.LoadedWindows.WID904
01d0ef6c 0295ef60 ASI.ParadigmPlus.LoadedWindows.WID904
01d0ef74 0295ef60 ASI.ParadigmPlus.LoadedWindows.WID904
01d0f280 0295f810 ASI.ParadigmPlus.Question
01d0f284 0295ef60 ASI.ParadigmPlus.LoadedWindows.WID904
01d26cec 02fdb36c ASI.ParadigmPlus.GrilleApp.GA1000
01d26cf0 0295f674 ASI.ParadigmPlus.QuestionList
01d26cf4 0295ef60 ASI.ParadigmPlus.LoadedWindows.WID904
01d26cf8 02fdb36c ASI.ParadigmPlus.GrilleApp.GA1000
01d26cfc 0295f810 ASI.ParadigmPlus.Question
01d26d00 0295f810 ASI.ParadigmPlus.Question
01d26d08 0295f810 ASI.ParadigmPlus.Question
01d26d30 06c3a958 System.String    SP1:SP1
01d26d40 029c232c System.String    TNE:TNE
01d26d50 06c3a958 System.String    SP1:SP1
01d26d54 029c232c System.String    TNE:TNE
01d26d60 029c232c System.String    TNE:TNE
01d26d78 06c3a958 System.String    SP1:SP1
01d26d7c 06c3a958 System.String    SP1:SP1
01d26d84 06c3a958 System.String    SP1:SP1
01d26da4 06c357a0 System.String    SB1:SB1
01d26da8 06c357a0 System.String    SB1:SB1
01d26db0 06c3a958 System.String    SP1:SP1
01d26db4 06ba3d08 System.String    WHT:WHT
01d26db8 06b987c8 System.String    WHT:WHT
01d26dbc 06b8aa10 System.String    WF:WF
01d26dc0 029fab00 System.String    L:L
01d26dc4 06c3a958 System.String    SP1:SP1
01d26dc8 06c4a518 System.String    S000:S000
01d26dd4 06c4a518 System.String    S000:S000
01d26dd8 0296b404 ASI.ParadigmPlus.Question
01d26ddc 0296a00c ASI.ParadigmPlus.Question
01d26de0 02968a90 ASI.ParadigmPlus.Question
01d26de4 02966af8 ASI.ParadigmPlus.Question
01d26de8 06be6e1c ASI.ParadigmPlus.Answer
01d26dec 06c357a0 System.String    SB1:SB1
01d26df0 029fab00 System.String    L:L
01d26df4 0295fa54 ASI.ParadigmPlus.QuestionGroup
01d26df8 02963f80 ASI.ParadigmPlus.QuestionGroup
01d26dfc 029662fc ASI.ParadigmPlus.QuestionGroup
01d26e00 02961cb4 ASI.ParadigmPlus.QuestionGroup
01d26e0c 0295f810 ASI.ParadigmPlus.Question
01d26e10 0295ef60 ASI.ParadigmPlus.LoadedWindows.WID904
01d270d4 06c38ddc ASI.ParadigmPlus.Answer
01d270dc 06c4bc0c ASI.ParadigmPlus.Dimension
01d270e0 06c4b99c ASI.ParadigmPlus.DimensionList
01d27104 029607f8 ASI.ParadigmPlus.Question
01d27108 0295fa80 ASI.ParadigmPlus.QuestionList
01d27118 06c38e74 System.String    5:5
01d2711c 02960564 ASI.ParadigmPlus.Question
01d27120 0295fa80 ASI.ParadigmPlus.QuestionList
01d2781c 029fac84 ASI.ParadigmPlus.Answer
01d27820 02960464 ASI.ParadigmPlus.AnswerList
01d27824 029fcbd8 ASI.ParadigmPlus.Answer
01d27828 02960464 ASI.ParadigmPlus.AnswerList
01d2782c 029fca28 ASI.ParadigmPlus.Answer
01d27830 02960464 ASI.ParadigmPlus.AnswerList
01d27844 029faa84 ASI.ParadigmPlus.Answer
01d2784c 06c38e74 System.String    5:5
01d27850 02960564 ASI.ParadigmPlus.Question
01d27854 0295fa80 ASI.ParadigmPlus.QuestionList
01d27860 06c38e74 System.String    5:5
01d27864 02960564 ASI.ParadigmPlus.Question
01d27868 0295fa80 ASI.ParadigmPlus.QuestionList
01d27870 06c38e74 System.String    5:5
01d27874 02960564 ASI.ParadigmPlus.Question
01d27878 0295fa80 ASI.ParadigmPlus.QuestionList
01d2787c 029faa84 ASI.ParadigmPlus.Answer
01d27880 02960464 ASI.ParadigmPlus.AnswerList
01d27884 029fab84 ASI.ParadigmPlus.Answer
01d27888 02960464 ASI.ParadigmPlus.AnswerList
01d27974 02960e80 ASI.ParadigmPlus.Question
01d27978 0295fa80 ASI.ParadigmPlus.QuestionList
01d27bd0 06c3a8dc ASI.ParadigmPlus.Answer
01d27c08 06c3b924 ASI.ParadigmPlus.Answer
01d27c0c 02960f44 ASI.ParadigmPlus.AnswerList
01d27c10 06c3b860 ASI.ParadigmPlus.Answer
01d27c14 02960f44 ASI.ParadigmPlus.AnswerList
01d27c18 06c3ac90 ASI.ParadigmPlus.Answer
01d27c1c 02960f44 ASI.ParadigmPlus.AnswerList
01d27c20 06c3abcc ASI.ParadigmPlus.Answer
01d27c24 02960f44 ASI.ParadigmPlus.AnswerList
01d27c28 06c3ab08 ASI.ParadigmPlus.Answer
01d27c2c 02960f44 ASI.ParadigmPlus.AnswerList
01d27c30 06c3aa44 ASI.ParadigmPlus.Answer
01d27c34 02960f44 ASI.ParadigmPlus.AnswerList
01d27c38 06c3b4dc ASI.ParadigmPlus.Answer
01d27c3c 02960f44 ASI.ParadigmPlus.AnswerList
01d27c40 06c3a990 ASI.ParadigmPlus.Answer
01d27c44 02960f44 ASI.ParadigmPlus.AnswerList
01d27c48 06c3a8dc ASI.ParadigmPlus.Answer
01d27c4c 02960f44 ASI.ParadigmPlus.AnswerList
01d27c6c 02960e80 ASI.ParadigmPlus.Question
01d27c70 0295fa80 ASI.ParadigmPlus.QuestionList
01d27e04 029628d0 ASI.ParadigmPlus.Question
01d27e08 02961ce0 ASI.ParadigmPlus.QuestionList
01d27e28 029628d0 ASI.ParadigmPlus.Question
01d27e2c 02961ce0 ASI.ParadigmPlus.QuestionList
01d27f14 06b89804 ASI.ParadigmPlus.Answer
01d27f18 02962994 ASI.ParadigmPlus.AnswerList
01d27f1c 029628d0 ASI.ParadigmPlus.Question
01d27f20 02961ce0 ASI.ParadigmPlus.QuestionList
01d27f38 06c38e74 System.String    5:5
01d27f3c 02960564 ASI.ParadigmPlus.Question
01d27f40 0295fa80 ASI.ParadigmPlus.QuestionList
01d27f4c 06c38e74 System.String    5:5
01d27f50 02960564 ASI.ParadigmPlus.Question
01d27f54 0295fa80 ASI.ParadigmPlus.QuestionList
01d27f60 06c38e74 System.String    5:5
01d27f64 02960564 ASI.ParadigmPlus.Question
01d27f68 0295fa80 ASI.ParadigmPlus.QuestionList
01d27f88 06b89964 ASI.ParadigmPlus.Answer
01d27f8c 029628d0 ASI.ParadigmPlus.Question
01d27f90 02961ce0 ASI.ParadigmPlus.QuestionList
01d27fa8 06c4b34c System.String    FDIA:FDIA
01d27fac 0295fd84 ASI.ParadigmPlus.Question
01d27fb0 0295fa80 ASI.ParadigmPlus.QuestionList
01d27fb4 06b896dc ASI.ParadigmPlus.Answer
01d27fb8 02962994 ASI.ParadigmPlus.AnswerList
01d27fbc 029628d0 ASI.ParadigmPlus.Question
01d27fc0 02961ce0 ASI.ParadigmPlus.QuestionList
01d27fc8 029fab00 System.String    L:L
01d27fcc 029603a0 ASI.ParadigmPlus.Question
01d27fd0 0295fa80 ASI.ParadigmPlus.QuestionList
01d27fd4 06b89964 ASI.ParadigmPlus.Answer
01d27fd8 02962994 ASI.ParadigmPlus.AnswerList
01d27fdc 029628d0 ASI.ParadigmPlus.Question
01d27fe0 02961ce0 ASI.ParadigmPlus.QuestionList
01d27fe4 029628d0 ASI.ParadigmPlus.Question
01d27fe8 02961ce0 ASI.ParadigmPlus.QuestionList
01d28610 06b987c8 System.String    WHT:WHT
01d28614 02961dd8 ASI.ParadigmPlus.Question
01d28618 02961ce0 ASI.ParadigmPlus.QuestionList
01d2872c 06ba3d08 System.String    WHT:WHT
01d28730 029621f0 ASI.ParadigmPlus.Question
01d28734 02961ce0 ASI.ParadigmPlus.QuestionList
01d28778 029f1d94 ASI.ParadigmPlus.Answer
01d2877c 02963c14 ASI.ParadigmPlus.AnswerList
01d28780 06c37884 ASI.ParadigmPlus.Answer
01d28784 02963c14 ASI.ParadigmPlus.AnswerList
01d28788 06c379cc ASI.ParadigmPlus.Answer
01d2878c 02963c14 ASI.ParadigmPlus.AnswerList
01d28790 06c36798 ASI.ParadigmPlus.Answer
01d28794 02963c14 ASI.ParadigmPlus.AnswerList
01d28798 06c36510 ASI.ParadigmPlus.Answer
01d2879c 02963c14 ASI.ParadigmPlus.AnswerList
01d287a0 06c36648 ASI.ParadigmPlus.Answer
01d287a4 02963c14 ASI.ParadigmPlus.AnswerList
01d287ac 06c37a78 System.String    Custom Paint
01d287b0 06c379cc ASI.ParadigmPlus.Answer
01d287b8 072eb468 System.Collections.ArrayList+ArrayListEnumeratorSimple
01d287bc 02963c14 ASI.ParadigmPlus.AnswerList
01d289dc 029640b8 ASI.ParadigmPlus.Question
01d289e0 02963fac ASI.ParadigmPlus.QuestionList
01d28a38 029f13f4 System.String    Venting Sidelite Locking System
01d28a3c 029f1390 ASI.ParadigmPlus.Answer
01d28a44 072f0568 System.Collections.ArrayList+ArrayListEnumeratorSimple
01d28a48 0296417c ASI.ParadigmPlus.AnswerList
01d28a60 06c356f4 ASI.ParadigmPlus.Answer
01d28a68 06c4a518 System.String    S000:S000
01d28a6c 0295ffec ASI.ParadigmPlus.Question
01d28a70 0295fa80 ASI.ParadigmPlus.QuestionList
01d28a7c 06c4a518 System.String    S000:S000
01d28a80 0295ffec ASI.ParadigmPlus.Question
01d28a84 0295fa80 ASI.ParadigmPlus.QuestionList
01d28a90 0295f768 System.String    CustItemNumber
01d28a98 06c4b34c System.String    FDIA:FDIA
01d28a9c 0295fd84 ASI.ParadigmPlus.Question
01d28aa0 0295fa80 ASI.ParadigmPlus.QuestionList
01d28aa4 029ecd64 ASI.ParadigmPlus.Answer
01d28aa8 0296417c ASI.ParadigmPlus.AnswerList
01d28aac 029e95ac ASI.ParadigmPlus.Answer
01d28ab0 0296417c ASI.ParadigmPlus.AnswerList
01d28ab8 029f13f4 System.String    Venting Sidelite Locking System
01d28abc 029f1390 ASI.ParadigmPlus.Answer
01d28ac4 072ef574 System.Collections.ArrayList+ArrayListEnumeratorSimple
01d28ac8 0296417c ASI.ParadigmPlus.AnswerList
01d28acc 029f1230 ASI.ParadigmPlus.Answer
01d28ad0 0296417c ASI.ParadigmPlus.AnswerList
01d28f4c 02961798 ASI.ParadigmPlus.Question
01d28f50 0295fa80 ASI.ParadigmPlus.QuestionList
01d2903c 0296466c ASI.ParadigmPlus.Question
01d29040 02963fac ASI.ParadigmPlus.QuestionList
01d290cc 06c07914 System.String    C:C
01d290d0 02964268 ASI.ParadigmPlus.Question
01d290d4 02963fac ASI.ParadigmPlus.QuestionList
01d29144 06c30604 ASI.ParadigmPlus.Answer
01d29148 02964730 ASI.ParadigmPlus.AnswerList
01d2914c 0296466c ASI.ParadigmPlus.Question
01d29150 02963fac ASI.ParadigmPlus.QuestionList
01d29154 06c0f9d8 ASI.ParadigmPlus.Answer
01d29158 0296450c ASI.ParadigmPlus.AnswerList
01d2915c 02964448 ASI.ParadigmPlus.Question
01d29160 02963fac ASI.ParadigmPlus.QuestionList
01d29164 02964268 ASI.ParadigmPlus.Question
01d29168 02963fac ASI.ParadigmPlus.QuestionList
01d2991c 029d6c7c System.String    021022
01d29928 029d6c7c System.String    021022
01d29934 029d6c7c System.String    021022
01d29938 029d5700 ASI.ParadigmPlus.Answer
01d2993c 0296450c ASI.ParadigmPlus.AnswerList
01d29940 029d6bdc ASI.ParadigmPlus.Answer
01d29944 0296450c ASI.ParadigmPlus.AnswerList
01d29948 02964448 ASI.ParadigmPlus.Question
01d2994c 02963fac ASI.ParadigmPlus.QuestionList
01d2f908 06c4b34c System.String    FDIA:FDIA
01d2f90c 0295fd84 ASI.ParadigmPlus.Question
01d2f910 0295fa80 ASI.ParadigmPlus.QuestionList
01d2ffd0 02964c28 ASI.ParadigmPlus.Question
01d2ffd4 02963fac ASI.ParadigmPlus.QuestionList
01d2ffe4 06c32030 System.String    SB:SB
01d2ffe8 02964a54 ASI.ParadigmPlus.Question
01d2ffec 02963fac ASI.ParadigmPlus.QuestionList
01d2fffc 06c3368c ASI.ParadigmPlus.Answer
01d30000 02964b18 ASI.ParadigmPlus.AnswerList
01d30004 02964a54 ASI.ParadigmPlus.Question
01d30008 02963fac ASI.ParadigmPlus.QuestionList
01d3000c 02964a54 ASI.ParadigmPlus.Question
01d30010 02963fac ASI.ParadigmPlus.QuestionList
01d30144 06c32030 System.String    SB:SB
01d30148 02964a54 ASI.ParadigmPlus.Question
01d3014c 02963fac ASI.ParadigmPlus.QuestionList
01d30154 06c31f90 ASI.ParadigmPlus.Answer
01d3015c 06c344d8 System.String    (COM) Lifetime Brass
01d30160 06c34418 ASI.ParadigmPlus.Answer
01d30168 072f16a0 System.Collections.ArrayList+ArrayListEnumeratorSimple
01d3016c 02964b18 ASI.ParadigmPlus.AnswerList
01d30174 06c31f90 ASI.ParadigmPlus.Answer
01d30178 06c34294 ASI.ParadigmPlus.Answer
01d3017c 02964b18 ASI.ParadigmPlus.AnswerList
01d30180 06c33e48 ASI.ParadigmPlus.Answer
01d30184 02964b18 ASI.ParadigmPlus.AnswerList
01d30188 06c32e6c ASI.ParadigmPlus.Answer
01d3018c 02964b18 ASI.ParadigmPlus.AnswerList
01d30190 06c32b78 ASI.ParadigmPlus.Answer
01d30194 02964b18 ASI.ParadigmPlus.AnswerList

^^ J'ai dû supprimer certaines des réponses ci-dessus pour adapter ce post, mais imaginez qu'il continue comme ça ^^

Veuillez ignorer les détails de notre code personnalisé. Tout cela me semble excessif, mais je ne suis pas un expert en la matière. La plupart des objets de la pile énumérés ci-dessus (plus de 1500) ne sont pas des paramètres de fonction, je pense donc qu'ils n'appartiennent pas à cette classe. Voici un exemple du type de code qui génère tous les éléments de la pile (des tonnes de code comme celles-ci sont exécutées):

gUnitType.Questions("French Door Style").CommonLogicValue = CommonLogicValues.AlwaysDisplay
gUnitType.Questions("French Door Style").ShowAllAnswers()
If Me.NumberOfUnits > 1 Then
    Me.Dimensions("Call Size Height").Answers("6-8 Handicap sill").Visible = False
    Me.Dimensions("Call Size Height").Answers("6-10 Handicap Sill").Visible = False
    Me.Dimensions("Call Size Height").Answers("7-0 Handicap Sill").Visible = False
    Me.Dimensions("Call Size Height").Answers("8-0 Handicap Sill").Visible = False
End If

Je ne suis pas non plus un expert en VB (ce code provient d'une autre partie de notre application avec laquelle je ne travaille pas normalement), mais est-il normal qu'un code comme celui-ci remplisse la pile de choses? Si quelqu'un a des idées, ou pourrait même simplement m'indiquer des ressources avec des informations sur ce genre de choses, ce serait grandement apprécié. Merci d'avoir regardé!

Était-ce utile?

La solution

Je pensais que je reviendrais ici avec la résolution au cas où quelqu'un d'autre se heurterait à elle. Les réponses ci-dessus ont toutes été utiles et ont indiqué pourquoi je risquais de déborder de la pile - mais ce que je ne pouvais toujours pas comprendre, c’était la raison pour laquelle le même code fonctionnait parfaitement dans notre application winforms.

Ce que j’ai finalement découvert, c’est qu’à un moment donné, Microsoft a modifié la taille de pile des threads IIS de 1 Mo (comme dans le contexte général .NET) à 256 ko. Cela explique tout, y compris le fait particulièrement frustrant que même la version ASPX fonctionne correctement sous le serveur de développement Visual Studio. J'ai résolu le problème en travaillant avec ce client en particulier pour réduire considérablement la quantité de code dans la fonction QuestionChangeLogic mentionnée ci-dessus (lorsque j'ai recherché le code source, la fonction contenait > 15 000 lignes!).

Merci pour l'aide les gars.

Autres conseils

Vous avez besoin de symboles décents pour le CLR. Définissez _NT_SYMBOL_PATH (sous WinDBG, utilisez le chemin File / Symbol File Path) de manière à inclure:

SRV*C:\WebSymbols*http://msdl.microsoft.com/download/symbols

Cela indique au moteur de symboles du débogueur qu'il peut télécharger des symboles du serveur de symboles en ligne de Microsoft vers C: \ WebSymbols. Choisissez un autre dossier si vous préférez qu’ils soient mis en cache ailleurs.

Il semble que Question, ListeListe, Réponse, etc. sont des struct s - c'est-à-dire des types de valeur - de sorte qu'ils sont alloués sur la pile plutôt que sur le tas. Vous devrez peut-être créer votre propre classe qui enveloppe ces types afin qu'ils soient sur le tas.

Selon le vidage d'objet de pile "ASI.ParadigmPlus.GrilleApp.GA1000" est 96872 octets. Vous voudrez peut-être comprendre en quoi consiste cet objet. C'est un assez gros morceau de votre espace de pile juste là.

Analyse de la pile d'appels Je vois clairement que la méthode à l'origine de cette exception est la suivante:

ASI.ParadigmPlus.LoadedWindows.WID904.QuestionChangeLogic

Comment se fait-il que vous ayez 315 variables dans cette méthode? N'est-ce pas trop?

"! clrstack -a " (après l'exécution de "! dso") devrait vous donner beaucoup plus d'informations sur chaque image gérée.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top