Issue:
Customer was experiencing FRM-93552 error at about 100 user sessions per server. Production system was Windows Server 2008 32-bit, Forms 11.1.1.4, with 8 Processors, 40GB RAM.
 
RAM Usage was low, only 15 out of 40GB used. CPU usage was averaging 5%. Thus system resources were not at the threshold.
 
Cause:
At the time of the error, the following messages were logged in the Windows System Event Logs:
Event Type: Warning
Event source: Win32k
Event ID: 243
Description: A desktop heap allocation failed
 
OR
 
Event Type: Warning
Event Soure: Win32k
Event ID: 244
Description: Failed to create a desktop due to desktop heap exhaustion
 
OR
 
Description: Application startup failures (0xc0000142)…
The reason Windows is throwing the error above, because the Forms Server is creating “frmweb.exe” sessions per every user. Whom of which all fall under OPMN. As more forms user sessions were being created, more windows heap space was getting used. Depending on how much heap was allocated, how many sessions, and how much data those sessions use, the heap eventually got depleted and could not create any new frmweb.exe sessions.
 
Thus, we found that the Windows Desktop Heap for Non-Interactive Processes was not sufficient enough to support the amount of end-users for the customer.
 
 
Resolution:
 
Increased Non-Interactive Process Heap space from 512 to 4096. The amount of end-users that the system could support went from 100 to 1400 users.
 
NOTE: This process requires a hardware/server reboot. Make sure the server is planned for an outage.
DISCLAIMER: This solution involves modifying the Windows Registry. Neither Oracle nor PITSS will be held responsible when making any updates to the Windows Registry. It is strongly recommended to make a full backup of the registry before modifying it. Apply at your own risk!
 
To update non-Interactive heap, do the following:
  1. Open Regedit
  2. Navigate to the following registry key path: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\SubSystems
  3. Open the “Windows” key
  4. Locate SharedSection=<some_number>,<some_number>,<some_number>
    example: SharedSection=1024,3072,512
  5. Update the 3rd value of Shared Section.The following example increases non-interactive heap from 512KB to 4096KB
    Before:
    SharedSection=1024,3072,512After:
    SharedSection=1024,3072,4096
  6. Save your changes to the key.
  7. Restart the Server/Hardware.

NOTE: the maximum heap you can allocate between all 3 heaps, is 48MB. System will not accept anything higher than 48MB. For more on Windows Heap allocation: http://support.microsoft.com/kb/184802

 

NOTE: This issue can also occur in Windows Server 2008 64-bit (Standard or R2) as well as Forms/Reports 11gR2.