My team is trying to find where the error message appears in the .NET windows service , which encapsulates the web service that Microsoft created and is located on our servers to support the business product we are using. Microsoft personally informed us that the error we receive is actually one of their errors, however, they cannot determine where and why it occurs. This is a critical business process that causes great mental pain in our team.
This error occurs, as far as we can tell, randomly and does not have any generalities that we can detect by looking at the stack traces. The last call to the stack trace is a method call, trying to read the response from the service without giving us any hints about where and why an error occurs in the method call to the service. Microsoft Windows does not register any errors in the event viewer.
We would like to trace where this error comes from by looking for the letter string of the error message that is being generated. If we can identify the method call that generates this error, we can go one step closer to narrowing the way to resolve this error.
While we do not have access to the source code for this service, we can, however, view the IL using IL Disassembler (idlasm.exe). I dropped IL for several assemblies, but there are no literal strings.
Is it possible to find the letter string inside IL? I assume it is encoded - I just don't know enough about IL to determine where to look, or how to identify a string in IL. If it does not exist as a literal string with a method in IL and is stored in a resource, where else can an error message be found?
Stack tracing with application name replacement.
Raw Error: There is insufficient memory to execute this function. This can be caused by recursive function calls. Contact your system administrator. at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall) at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters) at Product.DoSomething() in c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\root\da35f853\f48bba34\App_WebReferences.jygjwt-a.0.cs:line 701 at Product.DoSomething() in E:\Sites\Example.com\App_Code\File.vb:line 1105 at ASP.shop_checkout_aspx.ProcessCheckout() in E:\Sites\Example.com\processcheckout.aspx:line 546
A few notes on the side are that there is a lot of memory during this error message, and when this error occurs, each subsequent call to any method returns the same error. It will only decrease by restarting Microsoft services.
We have narrowed down each call to the services used by our website, but cannot reproduce this message. We can overload the service in development with approximately 1000-fold traffic, as can be seen from production, and cause an exception from memory (due to the use of all memory), but not a message that indicates " Can be caused by calling the recursive function". Microsoft's Agian is a unique mistake that their product makes.
Update
We were able to find a literal error message in the .etx file, which looks like this:
// ÚÄÄÄÄÄÄÄÄÄ¿ // ÚÄ´ STACK ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ // ³ ÀÄÄÄÄÄÄÄÄÄÙ ³ // ³ ³ // ³ Stack Manager ³ // ³ ³ // ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ @ 1@15 @ 0@ @ 2@1 @ 0@ There is insufficient memory to execute this function. This can be caused by recursive function calls that are used in the program. Contact your system administrator. @ 2@END @ 0@
I assume that @ 1@15 @ 0@ , @ 2@1 @ 0@ and @ 2@END @ 0@ are some kind of link that assemblies use to refer to these lines. Does anyone have any information on how to bind them back to one of the assemblies that use these strings? So far, there seems to be no data in IL dumps that match the format with @ characters.