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

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

Try (setf *break-on-signals* 'error) (or other condition class). Cheers, Vsevolod Dyomkin On Sat, May 23, 2009 at 5:35 PM, Bill St. Clair <billstclair@gmail.com>wrote:
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
_______________________________________________ slime-devel site list slime-devel@common-lisp.net http://common-lisp.net/mailman/listinfo/slime-devel
-- vsevolod

* Bill St. Clair [2009-05-23 16:35+0200] writes:
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 checked in a fix for this. *break-on-signals* should work now. Helmut.
participants (3)
-
Bill St. Clair
-
Helmut Eller
-
Vsevolod