[slime-devel] Weird interaction between CMU, SLIME, floating-point-modes, possibly kernel/chipset?

rif rif at MIT.EDU
Fri Aug 6 14:01:01 UTC 2004


Sorry for the length of this post, but I'm encountering a very odd
problem.  This problem involves different behavior on two different
x86 machines, one of which is a Dell Xeon desktop machine running
Fedora Core with a 2.4.22 kernel, the other an IBM T42 laptop running
Debian Testing with a 2.6.3 kernel.  (The laptop has a Pentium M chip
--- I do not know if this can be causing the differences, I guess the
kernel difference seems more likely.)

On both machines, I am using SLIME from CVS downloaded on 06 August
2004, and I'm using the CMUCL 19A binary release downloaded on 05
August 2004.  Before each run of SLIME, I remove all the .x86f files
from the slime directory, as well the entire ~/.slime directory, which
seems to be caching these (this is probably overkill, but I don't have
a good feel for what's being cached when I change things, and I'm
trying to isolate the problem).

In all cases, we consider a .emacs file consisting (only) of the following lines:
(add-to-list 'load-path "/home/rif/Software/slime")
(require 'slime)
(setq swank:*communication-style* :sigio)
(setq inferior-lisp-program "/home/rif/Software/CMU19A/bin/lisp")

The .cmucl-init file is either blank, or consists of the single line:
(set-floating-point-modes :traps nil)

If the .cmucl-init file is not blank (contains the above line), at the CL-USER>
prompt, I type:
(get-floating-point-modes)

If the .cmucl-init file IS blank, then I type at the prompt:
(set-floating-point-modes :traps nil)
(get-floating-point-modes)

We consider a "correct" result to be 
(:TRAPS NIL :ROUNDING-MODE :NEAREST :CURRENT-EXCEPTIONS (:INEXACT)
 :ACCRUED-EXCEPTIONS (:INEXACT) :FAST-MODE NIL :PRECISION-CONTROL :64-BIT)

We consider
(:TRAPS (:OVERFLOW :INVALID :DIVIDE-BY-ZERO) :ROUNDING-MODE :NEAREST
 :CURRENT-EXCEPTIONS (:INEXACT) :ACCRUED-EXCEPTIONS (:INEXACT) :FAST-MODE NIL
 :PRECISION-CONTROL :64-BIT)

to be an "incorrect result".

On each of the two machines, I tested the empty and single-line
.cmucl-init files inside and outside SLIME (outside SLIME means
starting CMUCL in a terminal).  On the desktop, everything gave the
correct result.  On the laptop, everything gave the correct result
EXCEPT the combination of the blank initialization file and SLIME,
which gave the incorrect result.  For this combination, I also tried
changing :sigio in the .emacs to :fd-handler, based on some earlier
discussions on this list; this did not seem to make any difference.

Summary: On my Dell machine, all methods give the correct result.  On my IBM
laptop, I do not have any way to set CMUCL floating-point modes on an
already running SLIME, although I can do it either in a terminal or at
SLIME start-up time.

Any help or suggestions are appreciated.

Sincerely,

rif




More information about the slime-devel mailing list