Consultor Eletrônico



Kbase 18726: Adjusting registry setting to resolve windows User32.dll Initialization Failure Errors
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   12/16/2004
Status: Verified

FACT(s) (Environment):

Progress 8.x
Progress 9.x
Windows NT 32 Intel/Windows 2000

SYMPTOM(s):

user32.dll initialization failure due to out of memory

DLL initialization failure Initialization of the dynamic link library c:\windows\system32\user32.dll failed. The process is terminating abnormally.

Broker could not spawn a server. (1157)

BROKER: Could not spawn a server. (1890)

Many databases or Appserver brokers (up to 30) on the same Windows server

Remote logins are refused

How to adjust the registry setting to resolve windows User32.dll Initialization Failure Errors

CAUSE:

The system has run out of memory to create a new desktop heap for the service being started.

This occurs due to differences in the way heap allocation occurs when you run Service as a background Service as opposed to running it as an interactive Service.

FIX:

To fix this behavior, you must edit the registry and restart the computer that is affected.

1.Run the Registry Editor(Regedt32.exe).
2.Under the HKEY_LOCAL_MACHINE subtree, go to the following subkey:

\System\CurrentControlSet\Control\Session Manager\ SubSystems\Windows

The default data for this value may look something like the following (all on one line):

%SystemRoot%\system32\csrss.exe ObjectDirectory=\Windows
SharedSection=1024,3072 Windows=On SubSystemType=Windows
ServerDll=basesrv,1 ServerDll=winsrv:UserServerDllInitialization,3
ServerDll=winsrv:ConServerDllInitialization,2 ProfileControl=Off
MaxRequestThreads=16

You must make the following change to this value:

Scan along the line until you reach the part that defines the SharedSection values and add ",1024" after the second number. This value should now look something like the following:

%SystemRoot%\system32\csrss.exe ObjectDirectory=\Windows
SharedSection=1024,3072,1024 Windows=On SubSystemType=Windows
ServerDll=basesrv,1 ServerDll=winsrv:UserServerDllInitialization,3
ServerDll=winsrv:ConServerDllInitialization,2 ProfileControl=Off
MaxRequestThreads=16

After making this change, quit Regedt32, and then restart the server.

This change limits the size of desktop heaps created by non-interactive services to 1024 KB, which should be ample for most services.

For Windows 2000 or XP, go to
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\SubSystems
Highlight this section.
In the right half of Regedit (the right pane) select Windows

Under the Edit menu

Select modify.

Use your arrow keys on your key board to move left or right within that text.
When you find the SharedSection text you will see 4 entries which follow it.
Modify the 3rd entry from the left (it will likely be set at 512).
Set this number to 1024.(rest should be kept the same>

After making this change, quit Regedt32, and then restart the server.

This change limits the size of desktop heaps created by non-interactive services to 512 KB, which should be ample for most
services.

Adding this optional third value defines the desktop heap size for non-interactive desktops (services) as 512K. By default, they
may use the same desktop heap size as interactive desktops, which is defined by the second value (3072, or 3 MB). The
minimum that this third value can be set to is 128. Any attempts to set this value to less than 128 result in 128 being used. If you
set this value to 512, approximately 90 services can be started before this behavior reoccurs.