1. GemStone/S 64 Bit 3.3.3 Release Notes


GemStone/S 64 Bit 3.3.3 is a new version of the GemStone/S 64 Bit object server. This release fixes a number of issues, and includes an updated version of VSD.

These release notes describe changes between the previous version of GemStone/S 64 Bit, version 3.3.1, and version 3.3.3. Version 3.3.2 was a limited distribution release; all changes in 3.3.2 are included in these release notes. If you are upgrading from a version prior to 3.3.1, 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.3.1.

Supported Platforms

Platforms for Version 3.3.3

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

  • Solaris 10 and 11 on SPARC
  • Solaris 10 on x86
  • AIX 6.1 on POWER6 and POWER7 and
    AIX 7.1 on POWER7 and POWER8
  • Red Hat Enterprise Linux Server 6.4, 6.5, 6.7, and 7.1;
    Ubuntu 12.04 and 14.04; and SUSE Linux Enterprise 12, all on x86
  • OS X 10.9.5 (Mavericks), with Darwin 13.4.0 kernel, on x86

Supported Windows client platforms are

  • Windows 7, Windows 2008 R2, Windows 8, and Windows 10

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

GemBuilder for Smalltalk (GBS) Versions

GemStone/S 64 Bit version 3.3.3 requires GBS version 8.1 or later for VisualWorks Smalltalk, or version 5.4.3 or later for VA Smalltalk. The following versions of GBS are certified with GemStone/S 64 Bit version 3.3.3:

GBS version 8.2

VisualWorks 7.10.1


VisualWorks 7.10.1


VisualWorks 8.1.1

32-bit and 64-bit

  • Windows 8, Windows 2008 R2, and Windows 7
  • Solaris 10 on SPARC
  • RedHat ES 6.7 and 7.1, SUSE ES 12,
    and Ubuntu 14.04
  • Windows 7
  • RedHat ES 6.7
    and 7.1
  • Windows 10, Windows 8,
    Windows 2008 R2, and Windows 7
  • Solaris 10 on SPARC
  • RedHat ES 6.7 and 7.1, SUSE ES 12, and Ubuntu 14.04
GBS version 8.1

VisualWorks 7.10.1


  • Windows 8, Windows 2008 R2, and Windows 7
  • Solaris 10 on SPARC
  • RedHat ES 6.4, 6.5, 6.7, and 7.1,
    SUSE ES 12, and Ubuntu 12.04 and 14.04
GBS version 5.4.3

VA Smalltalk


VA Smalltalk


  • Windows 10, Windows 8,
    Windows 2008 R2 and Windows 7
  • Windows 2008 R2 and Windows 7

For more details on supported GBS and client Smalltalk platforms and requirements, see the GemBuilder for Smalltalk Installation Guide for that version of GBS. Consult the matrices on the website, gemtalksystems.com/products/gbs-vw or gemtalksystems.com/products/gbs-va, for the latest updates.

VSD Version

The GemStone/S 64 Bit v3.3.3 distribution includes VSD version 5.3. The previous version of GemStone/S 64 Bit, v3.3.1, included VSD v5.2.

VSD v5.3 includes a number of new features, including control over saving display preferences and secondary sort keys.

For more information, see the Release Notes for VSD v5.3, or the VSD home page.

Upgrade and ICU library version

Version 3.3 included a new version of the ICU libraries. Since this controls sort ordering of any strings that use ICU/Unicode collation, GemStone now requires that the ICU libraries that are loaded have an ICU version matching that stored in the repository.

If you are upgrading from a 3.2.x version, there is an additional step required to configure version of the ICU library that will be loaded. The Installation Guides for v3.3.1 provides the specific steps that are required as part of upgrade.

Alternately, you would have to resort SortedCollections and rebuild Dictionaries that involve ICU comparisons.

However, due to the way libraries are loaded on AIX, setting this parameter is not effective. On AIX, you must rename the shared library files or create symbolic links. For example:

cd $GEMSTONE/lib 
chmod +w .
mv libicudata.54.1.so libicudata.54.1.so.save
ln -s libicudata.51.2.so libicudata.54.1.so
mv libicui18n.54.1.so libicui18n.54.1.so.save
ln -s libicui18n.51.2.so libicui18n.54.1.so
mv libicuuc.54.1.so libicuuc.54.1.so.save
ln -s libicuuc.51.2.so libicuuc.54.1.so

Changes and Bug Fixes

GsNMethod recompile could not resolve non-class literals

Change in 3.3.3; not fixed in 3.3.2

Upgrade to v3.3.x requires method recompile, which can be done either by filein or sending recompileAllMethods to the class. The recompile failed if the method included non-class literals. (#46519)

Remote page server log not deleted on stone shutdown

Change in 3.3.3; not fixed in 3.3.2

Remote page servers create a runpgsvrmain* log in a directory that is by default the users’s home directory. This log was not deleted on clean exit. (#46535).

Updated SSL libraries

The version of OpenSSL has been updated to 1.0.2j.

Changes in listening on hostname for Ubuntu

Ubuntu by default creates entries for for hostname. Listening on "any interface" or on localhost did not pick up connects to, and so these listens would not detect connects using the hostname. Now, the Stone and NetLDI will also listen on the hostname port when that is not the same as localhost. (#46452)

Incorrect tranlog entries for insert into a large byte object

When a large object is modified, changes to leaf objects composing it must be tranlogged. In the case of byte objects (such as Strings), insert operations did not correctly log the changes, so after restore the state could be inconsistent. (#46474)

Gem log handling in case of disconnect during login

During the login process, after the gem log is created but before the login completes, if the client exits then the Gem sees this as an error. However, since the client may have elected to exit, this may not actually be an error, so for this case, the exit was done cleanly and the log deleted. However, fatal client errors during login also were handled this way, so log file handling has been changed. (#46419)

Now, while the Gem still exits cleanly, the Gem log file is not deleted.

Excessive root page reads during remote login

When a remote Gem logs in, and there is not already a page server for that remote node on the Stone’s host, the page server that is started on the Stone’s host reads the root pages for each extent. The page servers read each root page several times, which impacted performance when there was a large number of extents. (#46476)

Stone frozen after random data sent to listening port

When random data is sent to GemStone listening ports, it could have resulted in the Stone freezing. (#46477)

DateTime asStringISO8601 reported time/timezone incorrectly

The method DateTime >> asStringISO8601 should report the time as adjusted for the DateTime’s timezone, followed by the timezone offset. Instead, it was reporting the time in local time, but including the timezone offset for the timezone. This produced incorrect results when executed for DateTimes that were not in the current timezone. (#46315)

Issues involving gslist

gslist -m did not report information on non-netldi process

gslist -m reports information on remote servers; however, it incorrectly only reported information on NetLDI processes, omitting information on Stone and other processes. (#46262).

gslist column width for PID increased

gslist formats output in fixed-width fields. The width for the gslist -l output area for the process PID has been increased to 8 spaces, to improve layout for systems in which the PID has more than 5 digits. (#46501)

GsNMethod instance variables not protected

Some instance variables are unsafe to access directly due to the way they are stored in memory. These accesses are protected; however, instVarAt: was not reimplemented to provide safe access. This method has been added to GsNMethod. (#46405)

Connecting on secure socket may hang rather than timeout

GsSecureSocket >> secureConnect and secureAccept may have waited forever if the connection did not complete, rather than timing out. (#46375)

AES Encryption issues

AES decryption failed with non single byte strings

An AES encrypted kind of MultiByteString is not handled correctly by decryption, resulting in an error. (#46439)

AES encryption with wrong argument size handled incorrectly

Encryption methods such as aesEncryptWith256BitKey: require specific sizes for the key and salt. If an incorrect salt size was provided, it did not raise an exception as it should; this could cause topaz to crash. (#46432, 46358)

listReferences could have missed first dynamic instance variable key

Due to an off-by-one error, the first dynamic instance variable’s key was not included when performing scans for listReferences methods. (#46400)

changeClassTo: disallowed for NSCs with fewer named instance variables

When changeClassTo: is requested, and the number of named instance variables is fewer than that of the original class, the values in the removed named instance variable slots may be moved to unnamed instance variables. This caused object corruption for instances of IdentityBag, and data corruption for instances of IdentitySet. (#46475 )

Object >> storeOn: failed for large strings

The method Object >> storeOn: had a typo that was exposed for large strings. (#46381)

Debugger issues

Saving method in block context in GBS debugger may corrupt session

When debugging server code in GBS, there were cases in which accepting a server method within the debugger, when the debugger is in a server method context, encountered a corrupt object error, and the session was lost. (#46418, #46471)

This only occurred with GemStone/S 64 Bit 3.3.x servers.

Argument variable references within block not included in debugger frame

Context frames for a block in the debugger do not normally include references to outer scope variables. However, when the variable, such as a method argument, is referenced within the block, this should be included in the frame. In earlier 3.3.x versions, such referenced outer scope variables were not included. (#46349)

Improved reporting of method needs recompile error after upgrade

After upgrade from an earlier version with method version differences, code must be recompiled before it can be executed. Attempting to execute a method that was not recompiled previously, returned an error message of the form " GsNMethod with oop 33230593 needs recompile", which was unhelpful without further analysis. Now, the error include the class and selector of the method that was not recompiled, as well as its OOP. (#46000)

_tempObjSpaceMax can return negative values on large TOC

When GEM_TEMPOBJ_CACHE_SIZE was configured to larger than about 2800000, the method System >> _tempObjSpaceMax returned a negative value. (#46384)

Unclear compiler error when assigning to an argument

When method code attempts to assign to an argument variable, which is illegal, the message was "expected a variable". This has been clarified, and now says "Expected an assignable variable". (#46455)

GsSysLog write handling of non-string input

Previously, writing non-string data to GsSysLog did not error, but did not do a write. (#45999)

ProfMonitorTree object creation report not generated

Due to changes in underlying profiling data in v3.3, the tree version of the object creation report did not find any data, and no results were reported. (#45441)

Subclassing GsExternalSession

Code that prevented practical subclassing of GsExternalSession has been cleaned up. (#46396)