Bug 45902

GemStone/S 64 Bit

3.2.12, 3.2.11, 3.2.10, 3.2.9, 3.2.8.1, 3.2.8, 3.2.7, 3.2.6, 3.2.5, 3.2.4, 3.2.3, 3.2.2, 3.2.1, 3.2.x, 3.2, earlier versions

All Platforms

3.3, 3.2.13

Netldi / pcmon socket leak from gslist -v or attempted login using incompatible versions

When the netldi communicates with a client running on an earlier version of $GEMSTONE, the socket can be left open after the end of the exchange, resulting in a socket leak and eventually running out of file descriptors.  This can occur when a client attempts an RPC login via the netldi, or does a gslist -v.

This bug can also impact the shared page cache monitor process, leaking sockets whenever a client running an earlier version of $GEMSTONE does a "gslist -v" against it.  This will cause the shared page cache monitor process to eventually crash with an error similar to:

    Error: open(/opt/gemstone/locks/gemstone.hostid, O_EXCL | O_CREAT | O_APPEND | O_RDWR) failed with errno=24,EMFILE, The process has too many open files

Followed by errors on the stone and associated gem processes similar to:

    The stone's connection to the local shared cache monitor was lost.
    Error Text: '  Semaphore operation Clear on semaphore 190 failed,   error = errno=22,EINVAL, Invalid argument (programmer error)

Workaround

If you are using an environment with mixed versions of GemStone:

1.  Use unique version names for netldi processes to avoid attempting to RPC login to a netldi on the wrong version of $GEMSTONE.  For example, netldi2.4.6 versus netldi3.2.12.  Make appropriate adjustments to your login parameters to reference these.

2.  Avoid using "gslist -v".  If you must, use "gslist -v -N" and specify a netldi of the proper version (see #1 above).

3.  If these cannot be avoided, periodically stop/restart the netldi and stone processes.


Last updated: 1/22/16