[slime-devel] Re: SWANK+CMUCL closed streams bug: "There's junk in this string"

Madhu enometh at meer.net
Thu Jul 12 05:37:13 UTC 2007


* Madhu <m3wsxcz2y8.fsf at robolove.meer.net> :
* http://permalink.gmane.org/gmane.lisp.slime.devel/6368
| I wonder if others have seen this problem: I see it once in a while and
| thought I'd ask here first.

I am able to get a repeatable test case with the latest CMUCL snapshot.
and latest SLIME from CVS: It is as simple as

M-x slime
M-x slime-disconnect

With these settings

(cl:setq SWANK:*USE-DEDICATED-OUTPUT-STREAM* t
      SWANK:*COMMUNICATION-STYLE* :sigio
      SWANK::*GLOBALLY-REDIRECT-IO* NIL nil)

With :fd-handler communication style and dedicated output stream CMUCL
is confused into going into an infinite loop writing to the closed
stream.

The combination of no dedicated output stream and :sigio does not
trigger the ldb. (But I get dropped intermittently to ldb)

I noticed this changelog entry:

* 2004-11-15  Helmut Eller  <heller at common-lisp.net>

	* swank-cmucl.lisp (emacs-connected): Install GC hooks to display
	GC messages in the echo area.
	(sos/misc :flush-output): There seem to be funny signal safety
	issues if the dedicated output stream is not used.  So, lets first
	reset the buffer index before sending the buffer to the underlying
	stream.

And the backtraces I noticed were along the lines of

  54: COMMON-LISP::ERROR
  55: LISP::CLOSED-FLAME
  56: COMMON-LISP::WRITE-CHAR
  57: FORMAT::FORMAT-WRITE-FIELD
  58: FORMAT::FORMAT-PRINT-INTEGER
  59: FORMAT::X-FORMAT-DIRECTIVE-INTERPRETER
  60: FORMAT::INTERPRET-DIRECTIVE-LIST
  61: FORMAT::%FORMAT
  62: COMMON-LISP::FORMAT
  63: SWANK::ENCODE-MESSAGE
  64: SWANK::SLDB-LOOP
  65: SWANK::CALL-WITH-BINDINGS
  66: "DEFIMPLEMENTATION CALL-WITH-DEBUGGING-ENVIRONMENT"
  67: SWANK::DEBUG-IN-EMACS
  68: COMMON-LISP::INVOKE-DEBUGGER
  69: COMMON-LISP::ERROR
  70: LISP::CLOSED-FLAME
  71: COMMON-LISP::WRITE-CHAR
  72: FORMAT::FORMAT-WRITE-FIELD
  73: FORMAT::FORMAT-PRINT-INTEGER
  74: FORMAT::X-FORMAT-DIRECTIVE-INTERPRETER
  75: FORMAT::INTERPRET-DIRECTIVE-LIST
  76: FORMAT::%FORMAT
  77: COMMON-LISP::FORMAT
  78: SWANK::ENCODE-MESSAGE
  79: "DEFUN MAKE-OUTPUT-FUNCTION"
  80: "DEFINTERFACE CALL-WITH-DEBUGGER-HOOK"
  81: SWANK::CALL-WITH-REDIRECTED-IO
  82: SWANK::CALL-WITH-CONNECTION
  83: (COMMON-LISP::FLET G1 SWANK-BACKEND::SOS/MISC)
  84: SWANK-BACKEND::SOS/MISC
  85: COMMON-LISP::FINISH-OUTPUT
  86: (COMMON-LISP::FLET G0 SWANK-BACKEND::SOS/MISC-FORCE-OUTPUT)
  87: SWANK-BACKEND::SOS/MISC-FORCE-OUTPUT
  88: SWANK-BACKEND::SOS/MISC

Indicating that the swank is trying to report the closed file error
message on the closed stream. [?]

I had asked questions on REDIRECT-IO before and I can guess at some
problems with the current protocol, but I'll wait for a response from
the original implementors, if they could identify and suggest what the
problem is, or at least document the known issues.

Thanks
--
Madhu




More information about the slime-devel mailing list