Richard M Kreuter wrote:
I believe it turns out to be a fluke that a 64-bit motifd works anywhere: the server passes out 32-bits of a pointer as external IDs for instances of a handful of types [1]. On a 64-bit machine, the instances' addresses might not fit in a 32-bit address, though.
(In fact, on my FreeBSD/amd64 machine, when I run the example from the documentation, the first shell widget always gets created at #x8045d8900, so motifd hands out #x45d8900, and then attempting to create the second widget with the shell as parent crashes the server.)
Seems like there are two options:
A. Change the wire protocol to accomodate 64-bit integers.
B. Synthesize 32-bit identifiers for instances of the offending types.
Option B seems simpler, I think. Does anybody have any notion of how better to do this than to add a table mapping pointers to some kind of opaque IDs at the message layer?
C. Run 32-bit motifd on 64-bit system. You need some 32-bit libraries to be able to run CMUCL at all, just install the X11 and Motif ones as well. Robert Swindells