A break is an asynchonous exception, usually triggered by an external source controlled by the user. A break exception can only occur in a thread while breaks are allowed by the break-enabled parameter (see section 9.4.1.10). When a break is detected, the exn:misc:user-break exception is raised.
A break is triggered when the break-thread procedure is applied to a thread. An exn:misc:user-break is raised in the destination thread sometime afterwards; if breaking is disabled when break-thread is called, the break is suspended until breaking is again enabled for the thread.
When break-thread is applied to a thread that is blocked on a nested thread (see call-in-nested-thread), and if breaks are enabled in the blocked thread, the break is implicitly handled by transfering it to the nested thread.
Breaks are disabled while an exception handler is executing. Note that the handling procedures supplied to with-handlers are not exception handlers, so breaking within such procedures is controlled by break-enabled.
Breaks are also disabled (indepedent of parameter settings) during the evaluation of the ``pre'' and ``post'' thunks for a dynamic-wind, whether called during the normal dynamic-wind calling sequence or via a continuation jump.