Bug 40751

GemBuilder for Smalltalk/VW

7.3, 7.2.2, 7.2.1, 7.2

GS64 2.4.4 and later


Incorrect handing of stubbed objects with unconnected classes

In some cases with unconnected classes, attempting to unstub a stubbed
object may encounter the error "Message not understood - instancesAreForwarders".

This bug is exposed by bug 40703, the Singletrip traversal fixes, introduced
the GemStone/S 64 Bit version 2.4.4 server release.


Creating class connectors for all classes will avoid this bug.

The following method change in GBS 7.3 fixes the problem:

GbxObjectReplication >> updateTypeOfClientObject
   "Make an existing stub into a replicate or forwarder if appropriate."

   clientObject zzzisStub
         [currentReport isHeaderOnly
               [self delegate nowExported.   "Server has added to export set if full report"
               clientObject unstubEmptyFromReport: currentReport class: clientClass inSession: session.
         "Class of header-only report may not be mapped if clientObject is an UnknownStub"
         (clientClass ~~ notCachedToken and: [clientClass instancesAreForwarders])
               ["Header-only report for stub which needs to become a forwarder
               and be identity clamped."
               "This can happen. If an unknown stub is created from a header-only report
               for an instance of an unmapped class. If the class is later mapped, and the client
               class answers true to #instancesAreForwarders, the class will get added to the class
               clamps. All subsequent reports will then be header-only, and should result in the
               stub becoming a forwarder."
               clientObject asForwarder]]

Last updated: 7/1/10