[slime-devel] Weirdness on Lispworks
Alain.Picard at memetrics.com
Alain.Picard at memetrics.com
Tue Mar 23 00:01:41 UTC 2004
Recently, SLIME has started exploding for me on lispworks:
I get backtraces like this:
================================================================
Error: NIL is not of type SWANK::CONNECTION when accessing slot SWANK-BACKEND:SEND.
1 (abort) Return to level 8.
2 Return to debug level 8.
3 Return to level 7.
4 Return to debug level 7.
5 Return to level 6.
6 Return to debug level 6.
7 Return to level 5.
8 Return to debug level 5.
9 Return to level 4.
10 Return to debug level 4.
11 Return to level 3.
12 Return to debug level 3.
13 Return to level 2.
14 Return to debug level 2.
15 Return to level 1.
16 Return to debug level 1.
17 Return to level 0.
18 Return to top loop level 0.
Type :b for backtrace, :c <option number> to proceed, or :? for other options
XOS 1 : 9 > :b
Call to SWANK::SEND-TO-EMACS
Call to SWANK::READ-USER-INPUT-FROM-EMACS
Call to (METHOD STREAM:STREAM-READ-CHAR (SWANK-BACKEND::SLIME-INPUT-STREAM))
Call to (METHOD STREAM:STREAM-READ-LINE (STREAM:FUNDAMENTAL-STREAM))
Call to (METHOD STREAM:STREAM-FILL-BUFFER (SYSTEM::LINE-BUFFER-STREAM))
Call to (METHOD STREAM:STREAM-READ-CHAR (STREAM:BUFFERED-STREAM))
Call to IO::READ-OBJECT
Call to IO::RECURSIVE-READ
Call to READ-PRESERVING-WHITESPACE
Call to INVOKE-DEBUGGER
Call to SWANK::SEND-TO-EMACS
Call to SWANK::READ-USER-INPUT-FROM-EMACS
Call to (METHOD STREAM:STREAM-READ-CHAR (SWANK-BACKEND::SLIME-INPUT-STREAM))
Call to (METHOD STREAM:STREAM-READ-LINE (STREAM:FUNDAMENTAL-STREAM))
Call to (METHOD STREAM:STREAM-FILL-BUFFER (SYSTEM::LINE-BUFFER-STREAM))
Call to (METHOD STREAM:STREAM-READ-CHAR (STREAM:BUFFERED-STREAM))
Call to IO::READ-OBJECT
Call to IO::RECURSIVE-READ
Call to READ-PRESERVING-WHITESPACE
Call to INVOKE-DEBUGGER
Call to SWANK::SEND-TO-EMACS
Call to SWANK::READ-USER-INPUT-FROM-EMACS
Call to (METHOD STREAM:STREAM-READ-CHAR (SWANK-BACKEND::SLIME-INPUT-STREAM))
Call to (METHOD STREAM:STREAM-READ-LINE (STREAM:FUNDAMENTAL-STREAM))
Call to (METHOD STREAM:STREAM-FILL-BUFFER (SYSTEM::LINE-BUFFER-STREAM))
Call to (METHOD STREAM:STREAM-READ-CHAR (STREAM:BUFFERED-STREAM))
Call to IO::READ-OBJECT
Call to IO::RECURSIVE-READ
Call to READ-PRESERVING-WHITESPACE
Call to INVOKE-DEBUGGER
Call to SWANK::SEND-TO-EMACS
Call to SWANK::READ-USER-INPUT-FROM-EMACS
Call to (METHOD STREAM:STREAM-READ-CHAR (SWANK-BACKEND::SLIME-INPUT-STREAM))
Call to (METHOD STREAM:STREAM-READ-LINE (STREAM:FUNDAMENTAL-STREAM))
Call to (METHOD STREAM:STREAM-FILL-BUFFER (SYSTEM::LINE-BUFFER-STREAM))
Call to (METHOD STREAM:STREAM-READ-CHAR (STREAM:BUFFERED-STREAM))
Call to IO::READ-OBJECT
Call to IO::RECURSIVE-READ
Call to READ-PRESERVING-WHITESPACE
Call to INVOKE-DEBUGGER
Call to SWANK::SEND-TO-EMACS
Call to SWANK::READ-USER-INPUT-FROM-EMACS
Call to (METHOD STREAM:STREAM-READ-CHAR (SWANK-BACKEND::SLIME-INPUT-STREAM))
Call to (METHOD STREAM:STREAM-READ-LINE (STREAM:FUNDAMENTAL-STREAM))
Call to (METHOD STREAM:STREAM-FILL-BUFFER (SYSTEM::LINE-BUFFER-STREAM))
Call to (METHOD STREAM:STREAM-READ-CHAR (STREAM:BUFFERED-STREAM))
Call to IO::READ-OBJECT
Call to IO::RECURSIVE-READ
Call to READ-PRESERVING-WHITESPACE
Call to INVOKE-DEBUGGER
Call to SWANK::SEND-TO-EMACS
Call to SWANK::READ-USER-INPUT-FROM-EMACS
Call to (METHOD STREAM:STREAM-READ-CHAR (SWANK-BACKEND::SLIME-INPUT-STREAM))
Call to (METHOD STREAM:STREAM-READ-LINE (STREAM:FUNDAMENTAL-STREAM))
Call to (METHOD STREAM:STREAM-FILL-BUFFER (SYSTEM::LINE-BUFFER-STREAM))
Call to (METHOD STREAM:STREAM-READ-CHAR (STREAM:BUFFERED-STREAM))
Call to IO::READ-OBJECT
Call to IO::RECURSIVE-READ
Call to READ-PRESERVING-WHITESPACE
Call to INVOKE-DEBUGGER
Call to SWANK::SEND-TO-EMACS
Call to SWANK::READ-USER-INPUT-FROM-EMACS
Call to (METHOD STREAM:STREAM-READ-CHAR (SWANK-BACKEND::SLIME-INPUT-STREAM))
Call to (METHOD STREAM:STREAM-READ-LINE (STREAM:FUNDAMENTAL-STREAM))
Call to (METHOD STREAM:STREAM-FILL-BUFFER (SYSTEM::LINE-BUFFER-STREAM))
Call to (METHOD STREAM:STREAM-READ-CHAR (STREAM:BUFFERED-STREAM))
Call to IO::READ-OBJECT
Call to IO::RECURSIVE-READ
Call to READ-PRESERVING-WHITESPACE
Call to INVOKE-DEBUGGER
Call to SWANK::SEND-TO-EMACS
Call to SWANK::READ-USER-INPUT-FROM-EMACS
Call to (METHOD STREAM:STREAM-READ-CHAR (SWANK-BACKEND::SLIME-INPUT-STREAM))
Call to (METHOD STREAM:STREAM-READ-LINE (STREAM:FUNDAMENTAL-STREAM))
Call to (METHOD STREAM:STREAM-FILL-BUFFER (SYSTEM::LINE-BUFFER-STREAM))
Call to (METHOD STREAM:STREAM-READ-CHAR (STREAM:BUFFERED-STREAM))
Call to IO::READ-OBJECT
Call to IO::RECURSIVE-READ
Call to READ-PRESERVING-WHITESPACE
Call to INVOKE-DEBUGGER
Call to SWANK::SEND-TO-EMACS
Call to SWANK::READ-USER-INPUT-FROM-EMACS
Call to (METHOD STREAM:STREAM-READ-CHAR (SWANK-BACKEND::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 (HARLEQUIN-COMMON-LISP:SUBFUNCTION MP::PROCESS-SG-FUNCTION MP::INITIALIZE-PROCESS-STACK)
XOS 2 : 9 >
================================================================
I traced the error to the following form in my code:
(setq *top-level-listener-process*
(run-safe-thread "Debug Listener" ; name
nil ; keywords
#'system::listener-top-level ; function
user::*terminal-io*))
So, I conditionalized my application to simply not do this when
running under SLIME (i.e. in development mode).
This is not a bug report (or even a complaint!) just an observation
that something which used to work no longer does so. I can imagine
why replacing the top level listener from behind SLIME's back may
not be a good thing.
Perhaps all this is really is a note so that someday, the mechanism
by which SLIME communicates with the back ends will be sufficiently
well documented that it can say somewhere in the manual that forms
like the above are not a good idea if you want to use slime. :-)
p.s. Slime juss keeps on gettin' better! Great work!
More information about the slime-devel
mailing list