Крюк на линиях не достаточно. Этот код представляет собой одну строку, но зацикливается навсегда:
while true do end
Вам нужно установить хук подсчета команд. Если я не ошибаюсь, это будет
lua_sethook(Lua, &LineHookFunc, LUA_MASKCOUNT, NUM_INSTRUCTIONS);
Вы хотите выбрать NUM_INSTRUCTIONS, чтобы он не был слишком маленьким (или вы понизили производительность) и не слишком большим (или вы будете ждать слишком долго, пока не остановитесь).
Для связанной реализации только для Lua см. эту библиотеку .
Если вы хотите добавить больше защиты от ненадежного кода Lua, поищите в «песочнице» Lua больше, чем просто предотвращение бесконечных циклов.