Previously, if a thread was cancelled (including if heat-engine is restarted) while a user hook (aka breakpoint) was active, the hook was still marked as active in the database. If the user modified the environment to disable the hook, then the next time Heat reached the point in traversing the stack where the hook was invoked, Heat would pause and wait for the hook to be cleared; however there was no log message to indicate that the hook was invoked, nor a corresponding event in the event list, nor any indication from the "hook-poll" command that the hook is active.
This workaround clears an active user hook when an exit exception occurs (e.g. the thread is cancelled) which resolves the issue. Previously, only Exception was caught, so exit exceptions were excluded.