Bug 52141

GemStone/S 64 Bit

3.7.6, 3.7.5, 3.7.4.3, 3.7.4.1, 3.7.4, 3.7.2, 3.7.1, 3.7, 3.6.8, 3.6.7, 3.6.6, 3.6.5, 3.6.4, 3.6.3, 3.6.2, 3.6.1.1, 3.6.1, 3.6, 3.5.8, 3.5.7, 3.5.6, 3.5.5, 3.5.4, 3.5.3

GsTsExternalSession send:* methods pass Symbol selectors by local OOP and fail across stones

GsTsExternalSession can log in to a Stone other than the one the current session is logged in to, including a Stone running a different version of GemStone. The following GsTsExternalSession methods send a message to an object in the external session’s repository:

    send:to:
    send:to:withArguments:
    nbSend:to:withArguments:
    send:to:withOops:

When the selector argument is a Symbol, these methods pass the OOP of that Symbol in the calling session’s repository. The external Gem then interprets that OOP in its own repository. If the external session is logged in to a different repository, the same Symbol usually has a different OOP there. As a result, the message may fail with an error, or the external Gem may perform a different method than the one intended, without any error. When the selector is a String, it is passed as text, and the external Gem looks it up correctly.

Workaround

Pass the selector as a String rather than a Symbol.


                

Last updated: 10/16/26