[slime-devel] *break-on-signals* in ccl doesn't break if handler present

Bill St. Clair billstclair at gmail.com
Sat May 23 14:35:46 UTC 2009


I'm running the latest CVS version of slime, "2009-05-19" in a fairly
recent CCL (OpenMCL), "Version 1.3-r11936  (DarwinX8664)".

I would expect the following code to bring up an SLDB buffer with a
break loop in the repl:

(setq *break-on-signals* t)

(handler-case (error "foo") (error () 1))

Instead, it returns 1. This is not surprising given this in swank-openmcl.lisp:

(defun break-in-sldb (x y &rest args)
  (let ((*sldb-stack-top-hint* (or *sldb-stack-top-hint*
                                   (ccl::%get-frame-ptr))))
    (apply #'cerror y (if args "Break: ~a" x) args)))

I'm debugging some server code that really needs to catch all errors.
This makes it rather difficult. The only workaround I've discovered is
to set swank-backend::*break-in-sldb* to NIL and use CCL's builtin
debugger. Not my favorite debugging environment.

Clues, anyone?

I could probably fix this myself, and if nobody else has done it, I
may be forced to, but I'd rather make progress on my application code.

-Bill




More information about the slime-devel mailing list