A Day in the Life

A day in my life. Thoughts on leadership, management, startups, technology, software, concurrent development, etc... Basically the stuff I think about from 10am to 6pm.

8/11/2006

COM...the gift that keeps on giving

Here are some more things I learned today and all of these parts are related to the same program halt....

TODO: <File description>

I don’t know exactly what triggers the MFC error message box with the text, "TODO: <File description>". But I now know that I have a good reason to fill in all the VS_VERSION_INFO resources in my projects. Under some circumstances Microsoft pops up the message box below, obviously I couldn’t find any documentation that tells me exactly when Microsoft will do this, but I know it can happen.



To identify which part of the project triggered the error, update the FileDescription field in all the VS_VERSION_INFO structures in all your projects. That way when it goes you’ll know what assembly/dll was involved.

In Visual Studio open your project's the Resource View and under Version you’ll see VS_VERSION_INFO, change "FileDescription" to something unique.

EEFileLoadException

I haven’t exactly tracked down why this exception is being thrown. Microsoft doesn’t document it. But Microsoft does document the exception FileLoadException. Considering that I’m calling a managed assembly through an exposed COM interface from an unmanaged C++ executable, the error does fit. The description for FileLoadException is "The exception that is thrown when a managed assembly is found but cannot be loaded."

For some reason the description triggered some dormant brain cells, probably hanging around from when I was younger, which caused me to look in my Event Log. So I opened Event Viewer and I found that I had a .NET Runtime error that corresponded to the time I got the EEFileLoadException. Hmmm.

.NET Runtime version 2.0.50727.42 - 
Fatal Execution Engine Error (79F97075) (80131506)

Okay, this is more information but...what does it mean? Searching on the number 80131506 from MSDN of course doesn’t get a hit (if you hear a really loud sucking sound, that would be Microsoft search...sucking!)

First-chance exception at 0x7c81eb33 in MonteCarloPiApp.exe: 0xE0434F4D: 0xe0434f4d.

I also got a message box with the above error. Not much information available for this one, but I did find some recommendations about not running the application inside the debugger. So, I launched my program outside the debugger, got the "TODO message" box and selected the "Debug" button, which launches the debugger and sweetness... I get a "COMException was unhandled" error with an HRESULT of DISP_E_MEMBERNOTFOUND and a nice stack.

System.Runtime.InteropServices.COMException was unhandled
Message="Member not found. (Exception from HRESULT: 0x80020003 (DISP_E_MEMBERNOTFOUND))"
Source="System.Windows.Forms"
ErrorCode=-2147352573
StackTrace:
at System.Windows.Forms.Control.MarshaledInvoke(Control caller, Delegate method, Object[] args, Boolean synchronous)
at System.Windows.Forms.Control.Invoke(Delegate method, Object[] args)
at g.a(Delegate A_0, Object[] A_1)
at Digipede.Framework.Api.DigipedeClient.d(JobStatusEventArgs A_0)
at Digipede.Framework.Api.DigipedeClient.f(Object A_0)
at System.Threading._ThreadPoolWaitCallback.WaitCallback_Context(Object state)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback(Object state)

That’s something I can work with.

Updated formatting problem

4 Comments:

At August 15, 2006 1:47 PM, Anonymous Anonymous said...

Hi Kim,

Thanks for the feedback. Sorry you had difficulty using our search on MSDN. It's a continual work in progress.

In the meantime, take a look at the results that come from a prototype we put together a few months back. Hopefully there will be something there you can work with.

http://lab.msdn.microsoft.com/search/refinement.aspx?__VIEWSTATE=&query=80131506

Allen Wagner
MSDN Development Team
Microsoft Corporation

 
At August 16, 2006 11:12 AM, Blogger Kim Greenlee said...

Allen, thanks for that information. The http://lab.msdn.microsoft.com site looks interesting but the link didn’t work and a top-down search still didn’t produce any results. 80131506 is a Microsoft error code and I should be able to find a reference to it by using MSDN search, especially if the code shows up on a Microsoft page: http://support.microsoft.com/Default.aspx?kbid=913384.

It is nice to know that Microsoft is working on this.

 
At August 22, 2006 1:49 PM, Anonymous Anonymous said...

Hhmmm, that link should have worked.

If you're so inclined, try just going out to http://lab.msdn.microsoft.com/search and let it redirect you to the refinement UI. This prototype spans several sources for content, not just

Another hint, you might have better luck searching for '0x80131506' rather than just 80131506, just because of the way this type of error code is typically formatted.

Allen Wagner
MSDN Development Team
Microsoft Corporation

 
At August 22, 2006 1:54 PM, Anonymous Anonymous said...

Whoops, clicked pulish too soon. :-)

Completing the sentence in the previous post, this prototype spans several sources for content, not just stuff stored on MSDN.microsoft.com. It should also span most of the microsoft blogs and some of our external partners.

Good luck,

Allen

 

Post a Comment

<< Home