Hi all,
Following recent advices on c.l.l, I just tried a recently downloaded (02/04/04) version of SLIME. I am using it with XEmacs 21.4.12 and clisp 2.32, and I'm getting the following strange behaviour :
The first invocation of M-x slime RET in a just started XEmacs freezes it
the following sequences of evaluated forms freeze it as weel :
(slime-maybe-start-lisp) (slime-read-port-and-connect) or (slime-maybe-start-lisp) (slime-start-swank-server) ;; eval only once ! (setq port (slime-read-swank-port)) (slime-connect "localhost" port)
but NOT the following
(slime-maybe-start-lisp) (slime-start-swank-server) (setq *proc* (slime-net-connect "localhost" port)) (slime-init-connection *proc*)
which works fine (i.e. after evaluating a few more forms I get a fully functional SLIME)
In all cases, the lisp is started ok, as is the swank server. The problem seems to me to be located somewhere in the slime-init-connection/slime-net-connect interaction.
I tried to put a conditional in slime-connect do process to slime-init-connection only if (slime-net-connect "localhost" port) returns, and to increase the delay between each run-with-timer (the swank server gets started after a good 3-4 seconds) but it didn't seem to help.
The XEmacs stack dump I get when killing it is the following : Lisp backtrace follows: # (unwind-protect ...) accept-process-output(nil 0 10000) (while t (accept-process-output nil 0 10000) (when nil (recursive-edit) (error "Evaluation aborted."))) # bind (inhibit-quit debug-on-quit) (let ((debug-on-quit t) (inhibit-quit nil)) (while t (accept-process-output nil 0 10000) (when nil ... ...))) # (catch slime-result-66523 ...) (catch tag (slime-rex (tag sexp) (sexp package) (... ... ...) (... ...)) (let (... ...) (while t ... ...))) # (unwind-protect ...) (unwind-protect (catch tag (slime-rex ... ... ... ...) (let ... ...))) # bind (slime-stack-eval-tags tag) (let* ((tag ...) (slime-stack-eval-tags ...)) (unwind-protect (catch tag ... ...))) # bind (package sexp) slime-eval((swank:getpid)) (let ((--store--66522 ...)) (slime-with-connection-buffer nil (setq slime-pid:connlocal --store--66522) --stor e--66522)) (setf (slime-pid) (slime-eval (quote ...))) # bind (proc) slime-init-connection-state(#<network connection "SLIME Lisp" (1219 . "localhost") state:exit>) # bind (slime-dispatching-connection) (let ((slime-dispatching-connection proc)) (slime-init-connection-state proc) (slime-select-connection proc) p roc) # bind (proc) slime-init-connection(#<network connection "SLIME Lisp" (1219 . "localhost") state:exit>) (progn (message "slime-net-connect succeeded...") (slime-init-connection proc)) (if proc (progn (message "slime-net-connect succeeded...") (slime-init-connection proc))) (when proc (message "slime-net-connect succeeded...") (slime-init-connection proc)) # bind (proc) (let ((proc ...)) (when proc (message "slime-net-connect succeeded...") (slime-init-connection proc))) (when-let (proc (slime-net-connect "localhost" port)) (message "slime-net-connect succeeded...") (slime-init-c onnection proc)) # bind (kill-old-p port host) slime-connect("localhost" 1219) # bind (port) (let ((port ...)) (message "srpac: port read in file: %d" port) (slime-connect "localhost" port)) (cond ((file-exists-p ...) (let ... ... ...)) ((and ... ...) (message "Failed to connect to Swank.")) (t (if . .. ...) (setq slime-connect-retry-timer ...))) # bind (G66513 G66512 G66511) (lambda (G66511 G66512 G66513) (if (active-minibuffer-window) nil (message "Polling %S.. (Abort with `M-x slim e-connection-abort'.)" ...)) (setq slime-state-name (format "[polling:%S]" ...)) (if slime-connect-retry-timer ( cancel-timer slime-connect-retry-timer)) (setq slime-connect-retry-timer nil) (cond (... ...) (... ...) (t ... . ..)))(--G66505-- --attempt-- --retries--) apply((lambda (G66511 G66512 G66513) (if (active-minibuffer-window) nil (message "Polling %S.. (Abort with `M- x slime-connection-abort'.)" ...)) (setq slime-state-name (format "[polling:%S]" ...)) (if slime-connect-retry-t imer (cancel-timer slime-connect-retry-timer)) (setq slime-connect-retry-timer nil) (cond (... ...) (... ...) (t ... ...))) --G66505-- --attempt-- --retries-- nil) # bind (--cl-rest--) (lambda (&rest --cl-rest--) "\nCommon Lisp lambda list:\n (cl-none . NIL)\n\n" (apply (quote ...) (quote --G6 6505--) (quote --attempt--) (quote --retries--) --cl-rest--))() apply((lambda (&rest --cl-rest--) "\nCommon Lisp lambda list:\n (cl-none . NIL)\n\n" (apply (quote ...) (quot e --G66505--) (quote --attempt--) (quote --retries--) --cl-rest--)) nil) # bind (time-elapsed itimers itimer next-wakeup last-event-time this-command inhibit-quit quit-flag current-it imer) # (unwind-protect ...) # bind (match-data) byte-code("..." [this-command inhibit-quit quit-flag match-data itimer current-itimer match-data ((store-match -data match-data)) nil itimer-uses-arguments apply itimer-function itimer-function-arguments last-event-time nex t-wakeup itimers time-elapsed] 5) # (condition-case ... . ((error (byte-code "ÂÃÄ !!#" ... 5)) (quit (byte-code "ÁÂ!"" ... 4)))) # (unwind-protect ...) # bind (itimers itimer next-wakeup idle-time last-event-time recorded-run-time inhibit-quit time-elapsed) itimer-run-expired-timers(3.000095) # bind (sleep elapsed now itimer-inside-driver inhibit-quit ignored) itimer-timer-driver(nil) # (condition-case ... . error) # (catch top-level ...)
The detailed versions involved :
xemacs -V
XEmacs 21.4 (patch 12) "Portable Code" [Lucid] (i686-pc-linux) of Tue Oct 21 2003 on titan
clisp --version
GNU CLISP 2.32 (2003-12-29) (built 3285056062) (memory 3285056598) Software: GNU C 3.2.3 20030422 (Gentoo Linux 1.4 3.2.3-r1, propolice) Programme en ANSI C Features: (ASDF MK-DEFSYSTEM COMMON-LISP-CONTROLLER CLX-ANSI-COMMON-LISP CLX SYSCALLS CLOS LOOP COMPILER CLISP ANSI-CL COMMON-LISP LISP=CL INTERPRETER SOCKETS GENERIC-STREAMS LOGICAL-PATHNAMES SCREEN FFI GETTEXT UNICODE BASE-CHAR=CHARACTER PC386 UNIX) Installation directory: /usr/lib/clisp/ User language: ENGLISH Machine: I686(I686)titan.si.c-s.fr [172.17.90.32] (build 2.32-r1 from gentoo)
System: IBM T20 (PIII 700), gentoo 1.4
Tanks in advance for any help, and for this otherwise already very functional piece of work.
Stephane Perrot
------------------------------------------
Faites un voeu et puis Voila ! www.voila.fr