Microsoft KB Archive/192537

= Threads consume virtual memory quicker on Windows CE 2.1 =

Article ID: 192537

Article Last Modified on 3/9/2006

-

APPLIES TO


 * Microsoft Windows CE 2.10 Enhancement Pack for Windows CE Embedded Toolkit for Visual C++ 5.0
 * Microsoft Windows CE Embedded Toolkit for Visual C++ 5.0
 * Microsoft Windows CE Toolkit for Visual C++ 6.0
 * Microsoft Windows CE 2.11 for the Handheld PC

-



This article was previously published under Q192537



SYMPTOMS
Applications or libraries that create multiple threads and worked under Windows CE 2.0 may encounter out-of-memory conditions when run under Windows CE version 2.1.



CAUSE
Windows CE 2.1 now uses the stack reserve field in the program executable header. The Visual C++ linker default reserve is 1 MB.



RESOLUTION
Use the /STACK switch in the linker settings, or the module definition file STACKSIZE directive, to specify a lower default stack reserve.



STATUS
Microsoft is researching this problem and will post new information here in the Microsoft Knowledge Base as it becomes available.



MORE INFORMATION
Previous versions of Windows CE did not use the stack reserve field in the program executable header. Even though the linker default reserve was 1 MB, the operating system ignored this field, and used a predefined lower value. In Windows CE 2.1, this field is now used and may result in virtual memory being consumed quicker than anticipated. To circumvent this behavior, just add the /STACK switch to the linker settings with a more reasonable reserve value, such as  /STACK:65536 or use the STACKSIZE directive in a module definition file: STACKSIZE 65536 The stack commit parameter for these switches is not currently used by the Windows CE operating system.

Keywords: kbprb KB192537

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.