User Object Limit -

The Epicor pop-up asking about increasing the limit is monitoring the use of “User Objects”  registry key reference above is correct. While GDI Objects can be a problem (Big Red X where an Image or Complex control should display), it is really the User Objects that the Epicor Client is concerned about.

By default, Windows has a “per-process” limit of 10,000 User Object Handles with a total limit of 64K for all processes in an instance of Windows. The Registry setting can be modified to allow a maximum of 18,000 for a single process. Each UI Control in a Form is allocated at least one User Object Handle and since the Epicor UIs tend to have a large number of controls, it is pretty easy to approach the limit. I believe that a single instance of the Quote UI consumes over 2,000 User Object Handles. The Handles exist for the duration that a UI exists - even if it is not visible (memory cached for example).

The Epicor Client does not know in advance how many User Objects are needed to launch an individual UI so it cannot proactively prevent a client failure due to hitting the limit. In general, when the limit is reached the user will get an error message from Windows - usually something about not being able to “Allocate a Windows Handle”. In order to display that error message Windows needs to be able to allocate some User Object Handles and if not enough Handles were recovered after the initial limit was hit, the Epicor Client and all associated UIs will just vaporize.


Ref: https://www.epiusers.help/t/how-to-increase-windows-ui-resource-limit/51905/2


Solution:


Modify both registries below to max out to Value Data: 18000

- HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\GDIProcessHandleQuota

- HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\USERProcessHandleQuota


Example Below: