PageHeapFlags has been set

[This topic is intended to address a specific issue called out by the Exchange Server Analyzer Tool. You should apply it only to systems that have had the Exchange Server Analyzer Tool run against them and are experiencing that specific issue. The Exchange Server Analyzer Tool, available as a free download, remotely collects configuration data from each server in the topology and automatically analyzes the data. The resulting report details important configuration issues, potential problems, and nondefault product settings. By following these recommendations, you can achieve better performance, scalability, reliability, and uptime. For more information about the tool or to download the latest versions, see "Microsoft Exchange Analyzers" at https://go.microsoft.com/fwlink/?linkid=34707.]  

Topic Last Modified: 2005-11-18

The Microsoft® Exchange Server Analyzer Tool reads the following registry entries to determine the value for the PageHeapFlags entry:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\STORE.EXE

HKLM\Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\MAD.EXE

HKLM\Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\INETINFO.EXE

HKLM\Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\EMSMTA.EXE

If the Exchange Server Analyzer finds the value for PageHeapFlags to be present and configured with any value other than 0 or null, a warning is displayed.

The PageHeapFlags option is used in tandem with the GlobalFlag registry value described in GlobalFlag has been set. The PageHeapFlags option lets you select standard heap verification, which writes fill patterns at the end of each heap allocation and examines the patterns when the allocations are freed, or full-page heap verification. This puts an inaccessible page at the end of each allocation so that the program stops immediately if it accesses memory beyond the allocation. Because full-page heap verification uses a full page of memory for each allocation, its widespread use can cause system memory shortages.

In this case, the Exchange Server Analyzer is specifically looking to see if any PageHeapFlags value has been enabled for a variety of Exchange components:

  • STORE.EXE - the information store process

  • MAD.EXE - the system attendant process

  • INETINFO.EXE - the IIS admin and parent process

  • EMSMTA.EXE - the message transfer agent process

Unless you are actively engaged in debugging or tracing a problem with the help of Microsoft Product Support Services, it is recommended that the PageHeapFlags value be set to 0 at all times, or deleted completely, which has the same effect.

The PageHeapFlags registry value is not present by default and must be manually added if debugging of the STORE.EXE process (or any other process) is required. You can use the Gflags tool included with the Microsoft Windows Server™ 2003 support tools, which is on the Windows Server 2003 CD in the \Support folder. Alternatively, you can manually set the value to 0, or delete completely the PageHeapFlags value by using a registry editor. Both procedures are described in this article.

Important

This article contains information about editing the registry. Before you edit the registry, make sure you understand how to restore the registry if a problem occurs. For information about how to restore the registry, view the "Restore the Registry" Help topic in Regedit.exe or Regedt32.exe.

To correct this error using GFlags

  1. Click Start | Run, and in the Open field execute GFlags. The Global Flags user interface will appear.

  2. In the Image File Name field, enter STORE.EXE.

  3. Click Image File Options.

  4. Clear all the check boxes, and then click Apply.

  5. Repeat steps 2 through 4 for each of the above listed Exchange processes.

  6. Click OK to exit the GFlags tool and restart the affected services for the change to take effect.

  7. When using the GFlags tool to clear this value, it does not delete or change the value for the PageHeapFlags. Instead, it sets the GlobalFlag value to 0, which overrides and disables the behavior configured with the PageHeapFlags entry.

To correct this error using a registry editor

  1. Open a registry editor, such as Regedit.exe or Regedt32.exe.

  2. Navigate to: HKLM\Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\STORE.EXE

  3. Delete the value named PageHeapFlags.

  4. Repeat steps 2 and 3 for each of the listed Exchange processes.

  5. Exit the registry editor and restart the affected services for the change to take effect.

Before you edit the registry, and for information about how to edit the registry, see the Microsoft Knowledge Base article 256986, "Description of the Microsoft Windows Registry" (https://go.microsoft.com/fwlink/?linkid=3052&kbid=256986).