Peter Seibel peter@javamonkey.com writes:
So when I use C-c C-c (slime-interrupt) to try to interrupt a long-running computation in SLIME it sometimes takes a really long time (order 10-60 seconds) before the debugger pops up.
When we use the threads-based :SPAWN communication style we don't issue any interrupt/signal, we just send a "please interrupt yourself" message down the socket and wait for the reader-thread to process it. This means that responsiveness is in the hands of Lisp's thread scheduler. With CMUCL cooperative threads this is quite unresponsive and possibly it's the same thing with ACL too.
There may be a better way to handle this. Certainly I prefer :SIGIO to :SPAWN with CMUCL.
I've also noticed that if I do something that generates an error that will contain a lot of output (such as saying (boundp *y*) instead of (boundp '*y*) when *y* is list of several thousand standard-objects) then it also takes a really long time for the debugger to come up. I'm running Allegro 6.2 on GNU/Linux.
I see this too when the printed representation is big (e.g. a megabyte). With ACL both Lisp and Emacs chew CPU, with CMUCL it's just Emacs.