Opened 10 years ago

Closed 10 years ago

#164 closed defect (fixed)

Cannot quit SLIME REPL

Reported by: Mark Evenson Owned by: somebody
Priority: minor Milestone: unscheduled
Component: other Version: 0.27
Keywords: slime Cc:
Parent Tickets:

Description

One cannot direct SLIME repl to quit as the EXT:QUIT and EXT:EXIT functions throw a ProcessingTerminated? exception that has no corresponding handler under SLIME as the SLIME REPL doesn't actually use the ABCL repl code.

Change History (3)

comment:1 Changed 10 years ago by Mark Evenson

The following patch to SLIME probably works.

--- a/swank-abcl.lisp	Wed Jul 27 18:45:37 2011 +0200
+++ b/swank-abcl.lisp	Mon Aug 22 10:36:34 2011 +0200
@@ -716,4 +716,4 @@
          (threads:object-wait mbox 0.3))))))
 
 (defimplementation quit-lisp ()
-  (ext:exit))
+  (jstatic "exit" "java.lang.System" 0))

But the correct fix would be to figure out where to establish a proper handler so the EXT:QUIT routine would still be invoked from SLIME. This would allow code that depends on this condition being signaled to work, plus any future additional hooks.

comment:2 in reply to:  1 Changed 10 years ago by Mark Evenson

Replying to mevenson:

But the correct fix would be to figure out where to establish a proper handler so the EXT:QUIT routine would still be invoked from SLIME. This would allow code that depends on this condition being signaled to work, plus any future additional hooks.

Further analysis reveals that ProcessingTerminated? is a pure Java-side construct so there is currently no way to hook in from Lisp, so that part of the concern is unfounded.

Still, calling System.exit() seems really wrong. Need to reconsider the reason under which ProcessingTerminated? exception was introduced.

comment:3 Changed 10 years ago by Mark Evenson

Resolution: fixed
Status: newclosed

Addressed in r13530 so that the SLIME patch isn't necessary.

Centralizing such JVM exits in one place with perhaps a "Lisp process exiting" hook would perhaps be a reasonable feature.

Note: See TracTickets for help on using tickets.