The following bugs that were present in v3.4.3 are fixed in this version.
The process that implemented the garbage collection of unreferenced Symbols could commit interior nodes of the SymbolDictionary structure such that many Symbols were not actually garbage collected. (#47891)
Starting up a statmonitor -X using configuration parameters such as STN_STATMONITOR_ARGS did not work, as these methods automatically include the stone or cache name as an argument. The -X option provides host-only monitoring and no stone or cache name is permitted as an argument. The -X option is now handled, but note that there are limitations in the log file names permitted within the -F argument in this mode. (#47885)
The Stone failed to start with a missing entry for localhost in the machine host file /etc/hosts. Now, localhost is referenced internally by ::1 or 127.0.0.1 rather than relying on host translation. (#47202)
The amount of physical memory reported for the host of a GemStone process was not reported correctly on the Mac; the number provided was always 2048 MB. (#47905)
GciError >> stack may have gone into infinite recursion if an external session gets an error during the stack operation. (#47656)
GsExternalSession login parameters can accept an instance of GsNetworkResourceString, or a String containing NRS as an argument. The use of strings for the gemNRS: parameter was broken. (#47868)
The tests to determine if Gem was correctly logged out did not take into account the possible existence of a stone with the same name running on the Gem host but not used to login the External session; nor a Gem running on a remote node. While the logout proceeded correctly, the return would not complete and the logout would appear to hang. (#47941, #47663)
There is a race condition in logreceiver logic that can cause the slave stone to attempt to read from a newly transferred tranlog before any data has been permanently flushed to disk. This will generate errors claiming that the file is not a GemStone transaction log file. (#47844)
Under certain sequences of operations, when using NonTranloggedGlobals and when the oopHighWaterMark is increasing, the oopHighWaterMark was not updated correctly. This did not cause the restoreFromLogs to fail, however, the stone could not subsequently start up. (#47679)
Execution of the method GsSysLog >> writeErrorMessage: failed with an Invalid priority ArgumentError. (#47878)
When argument to SequentialCollection >> before: was the first element, or the argument to after: was the last element, the error incorrectly stated that the argument was not found in the collection. (#48072)
Applications may install either Portable or Legacy stream hierarchies, which differ in the indexing of the start at 0 or 1. With legacy streams installed, which is the default for applications that originated earlier then v2.0, explicitly calling the PositionableStreamPortable>>match: would error. (#47285)
Using instVarAt:put: to assign a class instance variables value reported an error. (#47430)
During the Stone restart during upgrade, the Reclaim and Admin GcGem/s were started, but could not login due to a version mismatch, and no further startup attempts were made after upgrade. This left the upgraded system without the GcGems running. (#47884)
The upgrade process attempted to add a dynamic instance variable #name to existing ObjectSecurityPolicies, for later use in displaying descriptive information about the security policy.
The upgrade process executes removeallmethods to ensure old methods that have been removed in the new version are removed. This execution of removeallmethods should only apply to persistent methods in environment 0, the standard GemStone Smalltalk environment. It was incorrectly removing methods in environments above 0, and removing session methods. Now, upgradeImage will not remove methods that have been installed in other environments. (#47821), or transient session methods (#46802)
When using #dir: or #log: directives in the NRS that passed a gemnetobject into GemStone login parameters, the use of a directory name with spaces resulted in errors. Directory and file names with spaces are now supported. (#40211)
In a repository that has enabled Unicode Comparison Mode, the method UserProfile >> enableUnixAuthenticationWithAlias: fails with a primitive failure. (#47251)
As described in the Programming Guide, the transient and persistent SymbolLists have different functions. Several methods referred to the current User’s SymbolList, where they should refer to the session SymbolList. (#48050) The following methods have been updated:
GsDigitalEnvelope >> decryptWithPrivateKey: withPublicVerificationKey:
GsNMethod >> _literalValToAssocations:
SortedCollection >> resortAll:
SymbolDictionary >> _listClassesIn:matching:
The Stone log may have included warnings of the following pattern, which were unnecessarily alarming. (#47686)
Warning, found a birth time mismatch, log to Repository.
log birth time = 1207767503, Repository birth time = 1530037449
The test to determine if a SessionMethod needed to be created was imprecise, which resulted in SessionMethods being created unnecessarily. (#47887)
When method code includes statements such as true ifFalse: aBlock, the statement can be optimized by excluding from the compiled executable method. The tools in the system that locates method sends and step points depends on the complied code. Previously, the optimization-out of such blocks was inconsistent, and the senders and step point information was correspondingly inconsistent. (#47985)
If you wish code to remain in the method and available to sendersOf and similar operations, do not use the true ifFalse: pattern.