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.
GemStone/S 64 Bit version 3.5.4 is supported on the following platforms:
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.
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:
VisualWorks 7.10.1 is no longer considered fully certified, since it is out of support with Cincom.
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.
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.
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)
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.
System gemConfigurationAt: #GemFailSafeNscEnumerate put: true
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)
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)
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)
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)
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)
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)
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)
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).
The statmonitor options to limit the set of processes to monitor did not exclude the recently-added NetLDI process monitoring. (#48982)
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)