Sunday, March 05, 2023

Microsoft Visual C++ Runtime Library - Debug Assertion Failed!

Microsoft Visual C++ Runtime Library - Debug Assertion Failed!

Running an application in a debug environment throws the following assertion message.

---------------------------
Microsoft Visual C++ Runtime Library
---------------------------
Debug Assertion Failed!

Program: x:\test\myapp.exe
File: minkernel\crts\ucrt\src\appcrt\heap\debug_heap.cpp
Line: 996

Expression: __acrt_first_block == header

For information on how your program can cause an assertion
failure, see the Visual C++ documentation on asserts.

(Press Retry to debug the application)

---------------------------
Abort   Retry   Ignore   
---------------------------

In my specific case, this was caused by a string created in the heap by a DLL and freed in the executable.  The DLL was built using /MDd [Configuration Properties | C/C++ | Code Generation | Runtime Library = Multi-threaded Debug DLL (/MDd)] and the executable was built /MTd with MFC as static library [Configuration Properties | C/C++ | Code Generation | Runtime Library = Multi-thread Debug (/MTd)]/[Configuration Properties | Advanced | Use of MFC = Use MFC in a Static Library]. 

The fix/workaround is to change the executable to use MFC as a shared library [Configuration Properties | Advanced | Use of MFC = Use MFC in a Shared DLL]

//end

No comments:

Configuring TUN/TAP virtual network interface for use with QEMU on Xubuntu 24.04

Configuring TUN/TAP virtual network interface for use with QEMU on Xubuntu 24.04 I am planning to run qemu-system-ppc to play around QEMU ...