Salesforce

Client process failing with error 1720 in 10.1B+ attempting to attach to database in shared memory

« Go Back

Information

 
TitleClient process failing with error 1720 in 10.1B+ attempting to attach to database in shared memory
URL NameP129034
Article Number000160091
EnvironmentProduct : OpenEdge
Version: 10.1B, 10.2x, 11.x
OS: All supported platforms
Other: 32-bit licenses
Question/Problem Description
Client process fails with error 1720 in 10.1B and later when attempting to attach to database shared memory
Error 1176 when starting database server with large value for -B under OpenEdge 10.1B or later
 
Steps to Reproduce
Clarifying Information
Client connects to one or more databases
Error MessageUnable to attach shared memory Global\<shmname>, error 0. (1720)
The data space of the process is not enough for the shm segment (1176)
Defect Number
Enhancement Number
Cause
Changes to internal architecture of the OpenEdge 10.1B client code and 10.1B database internals have changed the memory requirements and some functional limits for many executables.

In 10.1B the client will most likely only be able to connect in shared memory to a database or multiple databases whose total allocated shared memory is around 1.4 GB of RAM (or less).

Depending on database startup parameters, the following are typical values for -B dependent on database blocksize. These numbers are largely approximations. 

DB Blocksize   Approximate limit for -B value which
               will allow shared memory connection
1k             1400000
2k              700000
4k              350000
8k              175000



Other database startup parameters which affect shared memory sizing such as -B2, -L, -Mxs, -shmsegsize, connection table, tablerangesize, indexrangesize, aibufs, bibufs, -omsize, etc. will lower the above limits.  Refer to Article  Real limits for Buffer Pool (-B) with Progress 9.1x and later, for 32-bit architectures   

Changes to .dll versions within a system may lower the above suggested values. In prior versions shared pointers were only 64 bits wide on 64-bit versions of Progress. In OpenEdge 10.1B or later versions shared pointers are 64 bits wide for both 32-bit and 64-bit versions of Progress / OpenEdge. This is one of the factors which has increased the size of client and server memory space in 10.1B and later necessary for the manipulation of 64-bit structures.

Though the database may be able to startup with values higher than those listed above, the client requires a much larger heap size in 10.1B compared to earlier versions and this added memory usage lowers the total memory that the client can attach to and still be within the addressable 32-bit memory limit for a client executable on Windows.
Resolution
1. Reduce the shared memory on one or more database servers startup parameters.  

A good starting point is to reduce the prior value of Database Buffers (-B) by 10%. Since OpenEdge 10.1B the -shmsegsize database startup parameter can be adjusted down so enough contiguous Memory are available for the Virtual Memory Manager to provide to the server. Refer to Article What is the default -shmsegsize value used when allocating shared memory segments?   

The database must be restarted for these new settings to take effect and the client connection in shared memory should be attempted immediately after the database is started to verify if the reduction in shared memory and the segments used to satisfy the requirement is sufficient to avoid the 1720 error. This also increases the chances of their being enough contiguous Memory available for the Virtual Memory Manager to provide to the client.  For example several clients may be able to connect, before the nth connection fails, due to the fact that the memory pages have fragmented such that contiguous memory are not longer available when the shared memory requirements are approaching the 32-bit executable limit.

2.  Connect Client-Server (-S -H) instead of shared-memory

3.  Use OpenEdge 64-bit license instead of the 32-bit install.
  • Windows OpenEdge 64-bit is available since OpenEdge 10.2B.  
  • 32-bit clients will need to connect to the 64-bit Database Client Server and will be able to attach to more shared memory through the 64-bit remote server
  • 64-bit client processes will be able to attach to more shared memory
Workaround
Notes
Keyword Phrase
Last Modified Date3/8/2021 12:47 PM

Powered by