Fellow slimers,
I have a (Lispworks) console image in which I load some files, then run a function which starts multiprocessing, e.g.
XOS> (load-server) ;;; hundreds of lines of stuff loading here...
XOS> (main-thread) .............DONE!
XOS>
I've set this console to be my LISP-PROGRAM, and M-x slime starts it all up fine.
After step 1, I can play around source files, compiling forms with C-c C-c.
After step 2, most interactions land me in this state:
;;; Compiling file /tmp/filerbPYBy.lisp ... ;;; Safety = 3, Speed = 1, Space = 1, Float = 1, Interruptible = 0 ;;; Compilation speed = 1, Debug = 2, Fixnum safety = 3 ;;; Source level debugging is on ;;; Source file recording is on ;;; Cross referencing is on ; Loading fasl file /tmp/filerbPYBy.ufsl 1
Error: The variable SWANK::*BUFFER-PACKAGE* is unbound. 1 Try evaluating SWANK::*BUFFER-PACKAGE* again. 2 Specify a value to use this time instead of evaluating SWANK::*BUFFER-PACKAGE*. 3 Specify a value to set SWANK::*BUFFER-PACKAGE* to. 4 (continue) Retry assertion. 5 (abort) Return to level 0. 6 Return to top loop level 0.
Type :b for backtrace, :c <option number> to proceed, or :? for other options
CL-USER 3 : 1 > :b
Call to SWANK::SWANK-DEBUGGER-HOOK Call to INVOKE-DEBUGGER Call to SWANK::FORCE-USER-OUTPUT Call to SWANK:EVAL-STRING Call to FUNCALL Call to SWANK::READ-FROM-EMACS Call to SWANK::READ-USER-INPUT-FROM-EMACS Call to (SUBFUNCTION 1 SWANK::CREATE-CONNECTION) Call to (METHOD STREAM:STREAM-READ-CHAR (SWANK::SLIME-INPUT-STREAM)) Call to IO::READ-OBJECT Call to IO::RECURSIVE-READ Call to READ-PRESERVING-WHITESPACE Call to EDITOR:RUBBER-READ-A-COMMAND Call to (SUBFUNCTION MP::PROCESS-SG-FUNCTION MP::INITIALIZE-PROCESS-STACK)
CL-USER 4 : 1 >
If I try to continue with the 2nd restart, to specify a value for SWANK::*BUFFER-PACKAGE*, no joy either:
CL-USER 6 : 1 > :c 2 (find-package :xos)
Enter a form to be evaluated: Error: NIL is not of type SWANK::CONNECTION when accessing slot SWANK::SOCKET-IO. 1 (continue) Retry assertion. 2 (abort) Return to level 0. 3 Return to top loop level 0.
Type :b for backtrace, :c <option number> to proceed, or :? for other options
XOS 7 : 1 >
Any clues? Anything info I can provide to help debug this?
I think there are fewer problems if I _first_ start multiprocessing, _then_ create a swank-server, then use slime-connect from emacs. But that's not nearly as convenient as just typing M-x slime. :-)
Alain.Picard@memetrics.com writes:
CL-USER 3 : 1 > :b
Call to SWANK::SWANK-DEBUGGER-HOOK Call to INVOKE-DEBUGGER Call to SWANK::FORCE-USER-OUTPUT Call to SWANK:EVAL-STRING Call to FUNCALL Call to SWANK::READ-FROM-EMACS Call to SWANK::READ-USER-INPUT-FROM-EMACS Call to (SUBFUNCTION 1 SWANK::CREATE-CONNECTION) Call to (METHOD STREAM:STREAM-READ-CHAR (SWANK::SLIME-INPUT-STREAM)) Call to IO::READ-OBJECT Call to IO::RECURSIVE-READ Call to READ-PRESERVING-WHITESPACE Call to EDITOR:RUBBER-READ-A-COMMAND Call to (SUBFUNCTION MP::PROCESS-SG-FUNCTION MP::INITIALIZE-PROCESS-STACK)
CL-USER 4 : 1 >
It seems that *DISPATCHING-CONNECTION* isn't properly bound. Is this backtrace from the same thread that created the initial connection or a from another thread? Do you use some form of tail call optimization?
SWANK::CURRENT-CONNECTION contains some special code for SBCL perhaps we need something similar for Lispworks.
I think there are fewer problems if I _first_ start multiprocessing, _then_ create a swank-server, then use slime-connect from emacs. But that's not nearly as convenient as just typing M-x slime. :-)
Emacs starts multiprocessing for you if set slime-multiprocessing to t.
Helmut.