FIX: App Terminates Unexpectedly after Windows NT 3.51 Upgrade (132344)
The information in this article applies to:
- The C Run-Time (CRT), when used with:
- Microsoft Visual C++, 32-bit Professional Edition 2.0
- Microsoft Visual C++, 32-bit Professional Edition 2.1
- Microsoft Visual C++, 32-bit Professional Edition 2.2
This article was previously published under Q132344 SYMPTOMS
After you upgrade to Windows NT version 3.51, malloc or other run-time
memory allocation functions may fail when unable to grow the run-time
library's heap.
Windows applications that are statically linked to the C run-time library
and all console applications issue the error, "R6018 - Unexpected heap
error," and terminate.
Windows-based applications which are linked to the DLL version of the C run-
time library, and MFC applications will unexpectedly terminate with no
error message. This termination may be preceded by a message saying that
the system is low on resources and to close down some applications.
CAUSE
This problem is caused by a change in the return code from the
VirtualAlloc() function. It formerly returned ERROR_NOT_ENOUGH_MEMORY when
it could not commit pages. Now it returns ERROR_COMMITMENT_LIMIT. The
problem occurs only on Windows NT version 3.51 and only when the
application hits its commit limit as chosen by Windows NT. This limit
varies depending on such things as the size of the installed memory and the
number of applications running. The sample code listed in this article
causes the R6018 error when run on Windows NT version 3.51 but runs to
completion under previous versions of Windows NT.
RESOLUTION
The C Run-Time heap manager was changed in Visual C++ 4.0 to no longer use
VirtualAlloc(). Visual C++ version 4.0 correctly handles the
ERROR_COMMITMENT_LIMIT case.
This problem can be worked-around in Visual C++ 2.X by allocating large
blocks of memory using Win32 memory allocation APIs.
STATUS
Microsoft has confirmed this to be a problem when using malloc on Windows
NT version 3.51. This problem was corrected in Visual C++, 32-bit edition,
version 4.0.
Modification Type: | Major | Last Reviewed: | 10/24/2003 |
---|
Keywords: | kbbug kbCRT kberrmsg kbfix KB132344 |
---|
|