1. GemStone/S 64 Bit 3.5.4 Release Notes

Overview

GemStone/S 64 Bitâ„¢ 3.5.4 is a new version of the GemStone/S 64 Bit object server, including several critical bug fixes. We recommend everyone using or planning to use GemStone/S 64 Bit upgrade to this new version.

These release notes describe changes between the previous version of GemStone/S 64 Bit, version 3.5.3, and version 3.5.4. If you are upgrading from a version prior to 3.5.3, review the release notes for each intermediate release to see the full set of changes.

The Installation Guide has not been updated for this release. For installation, upgrade and conversion instructions, use the Installation Guide for version 3.5.3.

Supported Platforms

Platforms for Version 3.5.4

GemStone/S 64 Bit version 3.5.4 is supported on the following platforms:

  • Red Hat Enterprise Linux Server and CentOS Linux 6.9, 7.6, and 8.1; and
    Ubuntu 16.04, 18.04, and 20.04
    GemStone performs testing on a mixture of Red Hat and CentOS servers; both are fully certified platforms. Any reference to Red Hat applies to both distributions.
  • Solaris 10 and 11.4 on x86
  • AIX 7.1 and 7.2
    Note that AIX v6.1 is no longer a supported platform.
  • OS X 10.14.6 (Mojave) with Darwin 18.7.0 kernel, and OSX 10.15.6 (Catalina) with Darwin 19.6.0 kernel, on x86
    (Mac is supported for development only)

For more information and detailed requirements for each supported platform, please refer to the GemStone/S 64 Bit Installation Guide for v3.5.3 for that platforms.

GemBuilder for Smalltalk (GBS) Versions

GemStone/S 64 Bit version 3.5.4 requires GBS version 8.4 or later for VisualWorks Smalltalk, or version 5.4.5 or later for VA Smalltalk.

The following versions of GBS are supported with GemStone/S 64 Bit version 3.5.4:

GBS version 8.4

VisualWorks
8.3.2

32-bit and 64-bit

VisualWorks
7.10.1

32-bit

VisualWorks
7.10.1

64-bit

  • Windows 10 and Windows 7
  • RedHat ES/CentOS 8.1, 7.8, and 6.10;
    Ubuntu 20.04, 18.04, and 16.04
  • Windows 10 and Windows 7
  • RedHat ES/CentOS 7.8 and 6.10; Ubuntu 16.04
  • Windows 10 and Windows 7
  • RedHat ES/CentOS  7.8 and 6.10

VisualWorks 7.10.1 is no longer considered fully certified, since it is out of support with Cincom.

GBS version 5.4.5

VA Smalltalk
9.2.2

VA Smalltalk
9.1

VA Smalltalk
8.6.3

  • Windows 10
  • Windows 7, Professional or above
  • Windows 10
  • Windows 7, Professional or above
  • Windows 10
  • Windows 8.1, Professional or above
  • Windows 7, Professional or above

Windows 7 reached end of life in January of 2020. While GemTalk continues to test on and support GemStone clients on Windows 7, it will no longer be considered fully certified.

For more details on supported GBS and client Smalltalk platforms and requirements, see the GemBuilder for Smalltalk Installation Guide for that version of GBS.

VSD Version

The GemStone/S 64 Bit v3.5.4 distribution includes VSD v5.5. This is the same version that was included with GemStone/S Bit v3.5.3; the updated build number reflects added statistics definitions.

VSD versions are not tied to GemStone server versions: both older and newer versions of VSD can be used to read statmonitor files generated by both older and newer versions of GemStone/S and GemStone/S 64 Bit.

Changes in this release

Updated library version

  • The version of OpenSSL has been updated to 1.1.1h
  • The version of OpenLdap has been updated to 2.4.53

Adds to kinds of IdentityBags in nested transactions may not tranlog correctly

If additions are made to an IdentityBag or a subclass of IdentityBag from within a nested transaction, the additions may not be logged correctly in the transaction logs.

If the database is later restored from backup and the transaction logs replayed, these added elements will be missing, and the variable that tracks the size of the collection will be incorrect. (#49092)

Added Gem Configuration parameter

For debugging issues with corrupted IdentityBags, the following run-time option has been added:

GemFailSafeNscEnumerate
Runtime-only configuration parameter for the Gem, which enables fail-safe enumeration logic in primitives for IdentityBag. This parameter should only be enabled after getting a corrupt object error (error 2261) during an enumeration.

To enable, execute:

System gemConfigurationAt: #GemFailSafeNscEnumerate put: true

Added topaz DUMPOBJ command

DUMPOBJ anObjectSpecification

This command does a low-level dump of an object, the node of a large object, or the node of an IdentityBag. For a byte format object, it displays the integer values of the bytes. This command cannot be abbreviated.

Abort of a nested transaction may not roll back all changes

Sending #objectSecurityPolicy: to an object changes the GsObjectSecurityPolicy associated with an object. These changes were not rolled back correctly when an abort was done in a nested transaction. (#49104)

Some changes to a kind of IdentityBag within a nested transaction were not rolled back correctly by an abort, and if the outer transaction committed, it was possible for the change that was meant to be aborted to become committed. (#49106)

pstack broken on Mac

The pstack script relies on the OS-level command gdb or lldb. With the added security required by Apple and implemented for GemStone in v3.5.3, lldb could not attach to a process. pstack has been rewritten for Darwin to use lldb, if installed, or use backtrace() otherwise. (#49023)

GsExternalSession disconnected by GsSocket class >> closeAll

In version 3.5.3, to support the added method GsExternalSession>>waitForReadReady, an instance of GsExternalSession creates a GsSocket representation of its underlying socket to the gem on login. If your application also performs GsSocket class >> closeAll, this method closes the GsExternalSession’s socket, which will disconnect the GsExternalSession. (#49091)

GsSocket closeAll no longer closes GsSockets created by fromFileHandle:

GsSocket class >> closeAll previously closed all GsSockets. Now, GsSockets created by GsSocket >> fromFileHandle: are not closed by closeAll.

List Instances issues

fastListInstances executed as if it was slow, and vice versa

Due to a typo, fastListInstances executed with the number of threads of a regular listInstances, and the regular listInstances executed with the number of threads of a fastListInstances. (#49077)

Result of listInstances on objects that are equal/not identical may be incorrect

An internal comparison when building the results of a listInstances: used = rather than == to perform the comparison. If the input argument array included multiple objects, and two (or more) of these object were equal but not identical to each other, references lists were missing or incorrect in the results. (#49101)

Some cases of invalid GsObjectSecurityPolicy layout are automatically repaired

The organization of Segments/GsObjectSecurityPolicies had significant changes between 32-bit GemStone/S, GS64 1.x, and GS64 2.x. The upgrade process updated the organization, but specific originating layouts and upgrade sequences have occasionally caused issues.

Cases such as missing entries, either due to upgrade deficiencies or incorrect repairs, are now automatically corrected during upgrade. (#49089)

Class comment that was placeholder may become the actual Class comment

When a Class does not have a class comment, the method #comment returns text with "No class-specific documentation", and providing the class hierarchy with instance variables. If a new version of this class is created (without explicitly providing a comment/description), this placeholder comment becomes the defined class comment, and remains the same even if the hierarchy/instance variables change. (#49082)

logreceiver may need restart after some logsender connection failures

When the logsender shuts down uncleanly and is restarted, the logreceiver reconnects automatically. However, it may not correctly reinitialize its data queue and attempt to write data received just prior to the disconnect that was re-transmitted from the logsender. (#49100).

statmonitor -X, -S, -P, -J, -G should not collect NetLDI stats

The statmonitor options to limit the set of processes to monitor did not exclude the recently-added NetLDI process monitoring. (#48982)

Upgrade errors with systems that explicitly loaded STON/Cypress classes into Globals

STON provides a Smalltalk object serialization format that is used by Rowan and other open-source projects, and Cypress provides file access and handling services. In v3.5.x, these classes are internal to the CodeLibrarianUser. If these classes are manually installed into Globals, the upgrade process will fail with an authorization error. (#49080)