Swallowing SEH Exceptions is EVIL!

This case was a good case-in-point of why crashing can sometimes be a good thing – at least it helps you find and fix your bugs! This issue was reported as ‘my application just randomly disappears’.  We had the developer run this app under procdump with unhandled exceptions being caught – ‘procdump -ma -e Test.exe’….


Adding a Configuration file for a VC++ DLL

Background   A VC++ application will fail to run if the required Visual C++ runtime libraries are not present on the target operating system (machine).  It’s the manifest of the executable used by the operating system loader to load assemblies that your application depends on.  Any C/C++ program built by Visual C++ 2005/2008 has to include…


.NET-BroadcastEventWindow causing BOOTUP_EXCEPTION_COMPLUS during application shutdown

This is one of the interesting scenario in which an unmanaged application built with Non-Microsoft technology was crashing during application shutdown with BOOTUP_EXCEPTION_COMPLUS exception (c0020001). This unmanaged application happened to be using unmanaged dll (built with Microsoft compiler) which in turn used IJW (a.k.a. C++ Interop) to interact with windows forms and create some ActiveX…


Troubleshooting CRT heap corruption

This article focuses on troubleshooting a heap corruption caused by writing into the next allocated block. Heap corruption comes into notice when the overridden memory is accessed, leaving in a state where it becomes hard to figure out the original code that is overriding the memory.   In this scenario, call stack could look like…


Troubleshooting when two modules share different copy of CRT

You may run into the problem, while upgrading from lower CRT to higher CRT version or when you mix the CRT versions. It may result in Access Violation. Here, I have used WinDbg to debug such a scenario.   Sometimes it’s hard to figure out the cause if the application access violates without displaying any…


How CRT dependency is added to manifest file.

Well, the dependency information is added to manifest file by a tool known as mt.exe. But this information is provided to mt.exe by linker. And linker gets this information from linker directives. Now these linker directives are present in two places. 1) Headers:  To be precise Crtdefs.h contains these linker directives #ifdef _M_IX86   #ifdef…