Peter Seibel peter@javamonkey.com writes:
So I was checking out whether multi-threaded debugging in Allegro worked and did this:
CL-USER> (mp:process-run-function "foo" #'(lambda () (break)))
One time it seemed to have opened up an SLDB buffer to debug the thread which I didn't notice at first and found later. But I just tried it again from a freshly started SLIME and it didn't go into SLDB.
The workaround is to put this line in ~/.swank.lisp:
(setq *debugger-hook* #'swank:swank-debugger-hook)
I'm still thinking about the right fix. The problem is that the new thread is not inheriting our *DEBUGGER-HOOK* so it doesn't know to debug with SLDB.
ACL has fancy mechanisms for controlling inheritance of special variables, though at the moment I suspect globally setting *debugger-hook* as above is the right way.
So two questions: 1) Am I doing something wrong now that's causing it not to use SLDB and
No, our bug.
- Assuming I am, is it supposed to silently create the SLDB buffer?
Is there some way to know that a thread has ended up in the debugger?
When a thread hits SLDB the buffer should /always/ pop up. I think in your case SLDB was not invoked at all, and that if you switch to *inferior-lisp* you'll see the TTY debugger there.
-Luke