[cmucl-imp] motifd isn't 64-bit kosher

Richard M Kreuter kreuter at progn.net
Sun Jul 6 19:01:14 UTC 2014


Argh. Didn't finish writing this.

Richard M Kreuter writes:


Greetings,

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?

Thanks,
Richard

[1] I think the complete list is AcceleratorTable, Atom, FontList,
TranslationTable, Widget, and sometimes XmString.


More information about the cmucl-imp mailing list