close Warning: Can't synchronize with repository "(default)" (/project/cmucl/public_html/git/cmucl.git does not appear to be a Git repository.). Look in the Trac log for more information.

Opened 4 years ago

Closed 3 years ago

#84 closed defect (fixed)

motifd is a 64-bit app

Reported by: rtoy Owned by: rtoy
Priority: minor Milestone:
Component: CLM Version: 2013-06
Keywords: Cc:

Description

motifd is a 64-bit application, unlike lisp which is a 32-bit app. This is only a problem if you install on a 32-bit OS where motifd won't run at all.

But making motifd a 32-bit app may cause problems on a 64-bit OS where the necessary 32-bit X libraries are not installed.

In addition, I (rtoy) have difficulties building motifd as a 32-bit app on linux.

Change History (2)

comment:1 Changed 3 years ago by rtoy

See also the message from Richard Kreuter on cmucl-imp, 2014/07/06: http://article.gmane.org/gmane.lisp.cmucl.devel/11319

comment:2 Changed 3 years ago by toy.raymond@…

  • Resolution set to fixed
  • Status changed from new to closed

commit 2dd94c9bc749b8cc13914ecc89e1ed1e91893695 Merge: 1daac74 c18c16c Author: Raymond Toy <toy.raymond@…> Date: Wed Oct 22 19:09:38 2014 -0700

Fix #84: motifd is 64-bit app.

Merge Richard Kreuter's clm-oids branch to master. This allows motifd to work even if motifd is a 64-bit app. From Richard:

...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 create the second widget with the shell as parent crashes the server.)

Seems like there are two options:

  1. Change the wire protocol to accomodate 64-bit integers.

  1. Synthesize 32-bit identifiers for instances of the offending types.

Option B seems simpler....

[It] suffices to run the example in the doc and the programs in INTERFACE.... Obvious problems in the current code:

  1. It's a doubly linked alist associating pointers with 32-bit integers.

  1. It looks like nothing ever gets removed from the alist....

  1. I'm not certain that I've caught all the places where motifd hands out pointers to Lisp.

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

Note: See TracTickets for help on using tickets.