Bug 46334

Critical

GemBuilder for Smalltalk/VW

8.1, 7.6.1, 7.6, 7.5, 7.4.1, 7.3.3, earlier versions

64-bit VisualWorks

8.2

Client map in 64-bit clients become corrupted by delete

Specifically in the client map code with 64-bit VisualWorks, under some rare cases the delete may not be done correctly, corrupting the client map.

The problem occurs when an entry being deleted is near the beginning of the table and falls between an entry whose hash is near the end of the table and the place where that entry has been placed due to collisions (which means that the entry falls in the collision chain of the entry that wraps around the end of the table to the beginning), the entries will fail to be swapped.

Searches for the key that should have been swapped will fail, and the invalid state could lead to further corruption as well.

This does not affect clients on 32-bit VisualWorks, which implement the clientMap somewhat differently.

Workaround

We strongly recommend not using GBS versions earlier than 8.2 with 64-bit VisualWorks clients.  Due to bug 46333, this kind of corruption cannot be detected by audit.

If you are using 64-bit VisualWorks clients, please contact GemTalk Technical Support for patch code and instructions.


Last updated: 7/28/16