[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