When the debugger is entered on the terminal, multiprocessing is blocked if the value of
*terminal-debugger-block-multiprocessing*
is
t
. This is the default value.
If you set this variable to
nil
, then other processes including timers will run in the terminal debugger. Beware that this will make it more difficult to debug multiprocess activities.
The other allowed value is
:maybe
. This means that multiprocessing is blocked in the terminal debugger unless the debugger was entered from the CAPI environment.
CL-USER 1 > dbg:*terminal-debugger-block-multiprocessing*
T
CL-USER 2 > unbound
Error: The variable UNBOUND is unbound.
1 (continue) Try evaluating UNBOUND again.
2 Specify a value to use this time instead of evaluating UNBOUND.
3 Specify a value to set UNBOUND to.
4 (abort) Return to level 0.
5 Return to top-level loop.
6 Return from multiprocessing.
Type :b for backtrace, :c <option number> to proceed, or :? for other options
CL-USER 3 : 1 > (setq *timer* (mp:make-timer 'print 10))
Warning: Setting unbound variable *TIMER*
#<Time Event : PRINT>
CL-USER 4 : 1 > (mp:schedule-timer-relative *timer* 1)
#<Time Event : PRINT>
CL-USER 5 : 1 > :a
CL-USER 6 >
10 ;; <- printed after aborting from debugger
(setf dbg:*terminal-debugger-block-multiprocessing* nil)
NIL
CL-USER 7 > unbound
Error: The variable UNBOUND is unbound.
1 (continue) Try evaluating UNBOUND again.
2 Specify a value to use this time instead of evaluating UNBOUND.
3 Specify a value to set UNBOUND to.
4 (abort) Return to level 0.
5 Return to top-level loop.
6 Return from multiprocessing.
Type :b for backtrace, :c <option number> to proceed, or :? for other options
CL-USER 8 : 1 > (setq *timer* (mp:make-timer 'print 10))
#<Time Event : PRINT>
CL-USER 9 : 1 > (mp:schedule-timer-relative *timer* 1)
#<Time Event : PRINT>
CL-USER 10 : 1 >
10 ;; <- printed after 1 second, in the debugger