Hi,

I am getting _CrtIsValidHeapPointer Assertion in C++/CLI Application
Debug mode in VS 2005.
Expression: _CrtIsValidHeapPointer(pUserData)

******************************
It is breaking in dgbheap.c.

Here are steps:

1) I created application in VS2005 :
Project type - VC++
Visual Studio Installed Template - WindowsFormsApplication.
I added a dialog resource to this project and a class to the dialog
which is MFC dialog class.
I also changed the following project properties and their values:
a) CLR - /clr
b) Use MFC as Shared DLL
c) Linker ->advanced -> CLR Unmanaged Code Check - Apply Unmanaged
Code Check (/CLRUNMANAGEDCODECHECK)


When I run this app in the debug mode I get the assertion with
Expression: _CrtIsValidHeapPointer(pUserData).

Any help/url is appreciated.


Thanks a lot,
Arti

Re: _CrtIsValidHeapPointer Assertion in C++/CLI Application Debug by Scott

Scott
Wed Jun 20 11:14:02 CDT 2007

Art wrote:
> Hi,
>
> I am getting _CrtIsValidHeapPointer Assertion in C++/CLI Application
> Debug mode in VS 2005.
> Expression: _CrtIsValidHeapPointer(pUserData)
>
> ******************************
> It is breaking in dgbheap.c.
>
> Here are steps:
>
> 1) I created application in VS2005 :
> Project type - VC++
> Visual Studio Installed Template - WindowsFormsApplication.
> I added a dialog resource to this project and a class to the dialog
> which is MFC dialog class.
> I also changed the following project properties and their values:
> a) CLR - /clr
> b) Use MFC as Shared DLL
> c) Linker ->advanced -> CLR Unmanaged Code Check - Apply Unmanaged
> Code Check (/CLRUNMANAGEDCODECHECK)
>
>
> When I run this app in the debug mode I get the assertion with
> Expression: _CrtIsValidHeapPointer(pUserData).
>
> Any help/url is appreciated.
>
>
> Thanks a lot,
> Arti

When it hits this have a look at the debugger stack window and double
click on lines that look like your classes. This will often take you to
the exact pointer and code that is causing the problem.

--
Scott McPhillips [MVP VC++]


Re: _CrtIsValidHeapPointer Assertion in C++/CLI Application Debug mode. by SvenC

SvenC
Wed Jun 20 11:47:12 CDT 2007

Hi,

> I am getting _CrtIsValidHeapPointer Assertion in C++/CLI Application
> Debug mode in VS 2005.
> Expression: _CrtIsValidHeapPointer(pUserData)
>
> 1) I created application in VS2005 :
> Project type - VC++
> Visual Studio Installed Template - WindowsFormsApplication.
> I added a dialog resource to this project and a class to the dialog
> which is MFC dialog class.
> I also changed the following project properties and their values:
> a) CLR - /clr
> b) Use MFC as Shared DLL
> c) Linker ->advanced -> CLR Unmanaged Code Check - Apply Unmanaged
> Code Check (/CLRUNMANAGEDCODECHECK)
>
> When I run this app in the debug mode I get the assertion with
> Expression: _CrtIsValidHeapPointer(pUserData).

In this article http://msdn.microsoft.com/msdnmag/issues/06/05/MixAndMatch/
it is explained that the DLL CRT must be used.
Please check your C++ project properties: Code Generation : Runtime library:
Multi-threaded [Debug] DLL (/MD or /MDd)

--
SvenC


Re: _CrtIsValidHeapPointer Assertion in C++/CLI Application Debug mode. by Art

Art
Thu Jun 21 00:33:22 CDT 2007

Hi SvenC,
I am using C++ project properties: Code Generation : Runtime library=
Multi-threaded Debug DLL (/MDd)

Here is the call stack:

msvcr80d.dll!_msize_dbg(void * pUserData=0xfb9606fc, int
nBlockUse=2) Line 1473 + 0x30 bytes C++
msvcr80d.dll!_dllonexit_nolock(int (void)* func=0xfbd69d8c, void
(void)* * * pbegin=0x0013eab8, void (void)* * * pend=0x0013eab0) Line
295 + 0xd bytes C
msvcr80d.dll!__dllonexit(int (void)* func=0xfbd69d8c, void (void)* *
* pbegin=0x0013eab8, void (void)* * * pend=0x0013eab0) Line 273 +
0x11 bytes C
> ManagedC++.exe!_onexit(int (void)* func=0x00409b70) Line 110 + 0x1b bytes C
ManagedC++.exe!atexit(void (void)* func=0x00409b70) Line 127 + 0x9
bytes C
ManagedC++.exe!`dynamic initializer for 'g_Allocator''() Line 23 +
0x17 bytes C++
[Managed to Native Transition]
ManagedC++.exe!_initterm(void** pfbegin = 0x0040A384, void pfend = )
Line 130 C++
ManagedC++.exe!
<CrtImplementationDetails>::LanguageSupport::InitializeNative() Line
534 C++
ManagedC++.exe!
<CrtImplementationDetails>::LanguageSupport::_Initialize() Line 680 C+
+
ManagedC++.exe!
<CrtImplementationDetails>::LanguageSupport::Initialize() Line 824 +
0x9 bytes C++
ManagedC++.exe!?.cctor@@$$FYMXXZ() Line 871 + 0x9 bytes C++

On Jun 20, 9:47 pm, "SvenC" <S...@community.nospam> wrote:
> Hi,
>
>
>
> > I am getting _CrtIsValidHeapPointer Assertion in C++/CLI Application
> > Debug mode in VS 2005.
> > Expression: _CrtIsValidHeapPointer(pUserData)
>
> > 1) I created application in VS2005 :
> > Project type - VC++
> > Visual Studio Installed Template - WindowsFormsApplication.
> > I added a dialog resource to this project and a class to the dialog
> > which is MFC dialog class.
> > I also changed the following project properties and their values:
> > a) CLR - /clr
> > b) Use MFC as Shared DLL
> > c) Linker ->advanced -> CLR Unmanaged Code Check - Apply Unmanaged
> > Code Check (/CLRUNMANAGEDCODECHECK)
>
> > When I run this app in the debug mode I get the assertion with
> > Expression: _CrtIsValidHeapPointer(pUserData).
>
> In this articlehttp://msdn.microsoft.com/msdnmag/issues/06/05/MixAndMatch/
> it is explained that the DLL CRT must be used.
> Please check your C++ project properties: Code Generation : Runtime library:
> Multi-threaded [Debug] DLL (/MD or /MDd)
>
> --
> SvenC



Re: _CrtIsValidHeapPointer Assertion in C++/CLI Application Debug mode. by Ben

Ben
Thu Jun 21 17:48:31 CDT 2007


"Art" <artami2006@gmail.com> wrote in message
news:1182404002.683337.212070@n2g2000hse.googlegroups.com...
> Hi SvenC,
> I am using C++ project properties: Code Generation : Runtime library=
> Multi-threaded Debug DLL (/MDd)
>
> Here is the call stack:

Is this the first function called in your DLL? Or have some other functions
already had a chance to corrupt the heap? Maybe some other DLL using the
C++ runtime has done some damage.

>
> msvcr80d.dll!_msize_dbg(void * pUserData=0xfb9606fc, int
> nBlockUse=2) Line 1473 + 0x30 bytes C++
> msvcr80d.dll!_dllonexit_nolock(int (void)* func=0xfbd69d8c, void
> (void)* * * pbegin=0x0013eab8, void (void)* * * pend=0x0013eab0) Line
> 295 + 0xd bytes C
> msvcr80d.dll!__dllonexit(int (void)* func=0xfbd69d8c, void (void)* *
> * pbegin=0x0013eab8, void (void)* * * pend=0x0013eab0) Line 273 +
> 0x11 bytes C
>> ManagedC++.exe!_onexit(int (void)* func=0x00409b70) Line 110 + 0x1b
>> bytes C
> ManagedC++.exe!atexit(void (void)* func=0x00409b70) Line 127 + 0x9
> bytes C
> ManagedC++.exe!`dynamic initializer for 'g_Allocator''() Line 23 +
> 0x17 bytes C++
> [Managed to Native Transition]
> ManagedC++.exe!_initterm(void** pfbegin = 0x0040A384, void pfend = )
> Line 130 C++
> ManagedC++.exe!
> <CrtImplementationDetails>::LanguageSupport::InitializeNative() Line
> 534 C++
> ManagedC++.exe!
> <CrtImplementationDetails>::LanguageSupport::_Initialize() Line 680 C+
> +
> ManagedC++.exe!
> <CrtImplementationDetails>::LanguageSupport::Initialize() Line 824 +
> 0x9 bytes C++
> ManagedC++.exe!?.cctor@@$$FYMXXZ() Line 871 + 0x9 bytes C++
>
> On Jun 20, 9:47 pm, "SvenC" <S...@community.nospam> wrote:
>> Hi,
>>
>>
>>
>> > I am getting _CrtIsValidHeapPointer Assertion in C++/CLI Application
>> > Debug mode in VS 2005.
>> > Expression: _CrtIsValidHeapPointer(pUserData)
>>
>> > 1) I created application in VS2005 :
>> > Project type - VC++
>> > Visual Studio Installed Template - WindowsFormsApplication.
>> > I added a dialog resource to this project and a class to the dialog
>> > which is MFC dialog class.
>> > I also changed the following project properties and their values:
>> > a) CLR - /clr
>> > b) Use MFC as Shared DLL
>> > c) Linker ->advanced -> CLR Unmanaged Code Check - Apply Unmanaged
>> > Code Check (/CLRUNMANAGEDCODECHECK)
>>
>> > When I run this app in the debug mode I get the assertion with
>> > Expression: _CrtIsValidHeapPointer(pUserData).
>>
>> In this
>> articlehttp://msdn.microsoft.com/msdnmag/issues/06/05/MixAndMatch/
>> it is explained that the DLL CRT must be used.
>> Please check your C++ project properties: Code Generation : Runtime
>> library:
>> Multi-threaded [Debug] DLL (/MD or /MDd)
>>
>> --
>> SvenC
>
>


Re: _CrtIsValidHeapPointer Assertion in C++/CLI Application Debug mode. by Art

Art
Fri Jun 22 00:21:38 CDT 2007

Hi Ben,

It is a Windows Form Application. I am not using any DLL.
Added a MFC Dialog class after which I started getting this assertion
in the debug mode
This assertion comes before executing the code in Main().
The Application works fine in the RELEASE MODE.

Thanks,
Art