This is a case of unexpected behavior. It could also be a nasty case of user error. It's also possible that this is an SBCL bug. If that is the case, I can report the issue on sbcl-devel. I don't want to cross post so I'm trying here first. What I expected was for the inferior lisp process to shut down.
Info:
david@vega:~ $ uname -a Linux vega 2.6.5-k7 #1 SMP Thu Apr 29 10:01:49 EDT 2004 i686 GNU/Linux
; SLIME 2004-05-01 CL-USER> (loop for i from 1 to 10 collect (* i i) ) (1 4 9 16 25 36 49 64 81 100) CL-USER> (quit) ; Evaluation aborted
Looks good so far, but...
*inferior-lisp*
This is SBCL 0.8.10.4, an implementation of ANSI Common Lisp. More information about SBCL is available at http://www.sbcl.org/.
SBCL is free software, provided as is, with absolutely no warranty. It is mostly in the public domain; some portions are provided under BSD-style licenses. See the CREDITS and COPYING files in the distribution for more information. ; loading system definition from ; #P"/home/david/usr/lib/sbcl/systems/sb-bsd-sockets.asd" into ; #<PACKAGE "ASDF2757"> ; registering #<SYSTEM SB-BSD-SOCKETS {9912B21}> as SB-BSD-SOCKETS ; registering #<SYSTEM SB-BSD-SOCKETS-TESTS {9D71FB1}> as SB-BSD-SOCKETS-TESTS ; loading system definition from ; #P"/home/david/usr/lib/sbcl/systems/sb-posix.asd" into #<PACKAGE "ASDF2857"> ; registering #<SYSTEM SB-POSIX {985B089}> as SB-POSIX ; registering #<SYSTEM SB-POSIX-TESTS {99A0689}> as SB-POSIX-TESTS * STYLE-WARNING: implicitly creating new generic function STREAM-READ-CHAR-NO-HANG STYLE-WARNING: implicitly creating new generic function STREAM-READ-CHAR-WILL-HANG-P WARNING: discarding unsupported DOCUMENTATION of type SYMBOL for object SYMBOL WARNING: These Swank interfaces are unimplemented: (DISASSEMBLE-FRAME LIST-CALLEES LIST-CALLERS PROFILE-PACKAGE RESTART-FRAME WHO-BINDS WHO-CALLS WHO-MACROEXPANDS WHO-REFERENCES WHO-SETS WHO-SPECIALIZES)
T * ;; Swank started at port: 32898.
32898 * (quit)
debugger invoked on a SIMPLE-ERROR in thread 24022: Syscall interrupt_thread failed: No such process
You can type HELP for debugger help, or (SB-EXT:QUIT) to exit from SBCL.
(no restarts: If you didn't do this on purpose, please report it as a bug.) (SB-THREAD:INTERRUPT-THREAD 2 24026 QUIT)[:EXTERNAL] 0] (sb-ext:quit)
debugger invoked on a SB-INT:SIMPLE-CONTROL-ERROR in thread 24022: attempt to THROW to a tag that does not exist: SB-IMPL::%END-OF-THE-WORLD
You can type HELP for debugger help, or (SB-EXT:QUIT) to exit from SBCL.
restarts (invokable by number or by possibly-abbreviated name): 0: [ABORT] Reduce debugger level (to debug level 1). (SB-KERNEL::UNSEEN-THROW-TAG-ERROR-HANDLER 4 #<unavailable argument> #.(SB-SYS:INT-SAP #X40386BF8) #<SB-ALIEN-INTERNALS:ALIEN-VALUE :SAP #X403868C8 :TYPE (* (STRUCT SB-VM::OS-CONTEXT-T-STRUCT))> (142))[:EXTERNAL] 0[2]
After this, I can't do M-x slime again and have it work. Not even if I do M-x slime-disconnect.
Doing the perhaps friendlier M-x slime-disconnect to exit a session doesn't kill the inferior lisp process either:
*inferior-lisp*
0[2] * ;; Swank started at port: 32907.
32907 * ;; Connection to Emacs lost. ;; [end of file on #<FILE-STREAM for "a constant string" {9790839}>]
(quit)
debugger invoked on a SIMPLE-ERROR in thread 24147: Syscall interrupt_thread failed: No such process
You can type HELP for debugger help, or (SB-EXT:QUIT) to exit from SBCL.
(no restarts: If you didn't do this on purpose, please report it as a bug.) (SB-THREAD:INTERRUPT-THREAD 2 24150 QUIT)[:EXTERNAL] 0] (sb-ext:quit)
debugger invoked on a SB-INT:SIMPLE-CONTROL-ERROR in thread 24147: attempt to THROW to a tag that does not exist: SB-IMPL::%END-OF-THE-WORLD
You can type HELP for debugger help, or (SB-EXT:QUIT) to exit from SBCL.
restarts (invokable by number or by possibly-abbreviated name): 0: [ABORT] Reduce debugger level (to debug level 1). (SB-KERNEL::UNSEEN-THROW-TAG-ERROR-HANDLER 4 #<unavailable argument> #.(SB-SYS:INT-SAP #X40386BF8) #<SB-ALIEN-INTERNALS:ALIEN-VALUE :SAP #X403868C8 :TYPE (* (STRUCT SB-VM::OS-CONTEXT-T-STRUCT))> (142))[:EXTERNAL] 0[2] ;; Swank started at port: 32911. 32911 0[2]
That last Swank started message was from doing M-x slime.
If I do a M-x slime-disconnect and then a M-x slime-connect, I am unable to reconnect to the inferior lisp process.
Typing (quit) in the repl is probably not a friendly thing to do. I don't know how difficult it would be to know to close the inferior lisp process so that it can be started fresh with another M-x slime command. Perhaps an M-x slime-end-session or something would be a nice thing? Or is the general preference to just exit Emacs and start over?