У скриптовых языков довольно часто есть средство контроля.
Например, у той же библиотеки Rhino есть возможность "каждые N инструкций прерывать выполнение скрипта":
https://mozilla.github.io/rhino/java...xtFactory.html , setInstructionObserverThreshold
Если такое сделать, то когда в программе появится "бесконечный цикл" (мало ли), то движок может это распознать и сказать "у вас тут блок не работает, т.к. он уже сделал 10000 вычислений и не дошёл до конца".
А реакция может быть самая разная. Хоть даже и возврат "ошибки" через спец выход, который можно настроить на отправку SMS или же на перезагрузку всей схемы. Или "сохранение значений всех переменных и перезапуск".