а что трасса компилируется частями?
Да, смотри, вот у тебя какой-то код разогревается, включается рекординг. Он работает так: записали 1 (и только один) байт-код в IR => передали управление в VM, чтобы исполнить этот байт-код. И так до того момента, когда рекордер решит, что всё, трасса готова на уровне IR. Потом IR дополнительно оптимизируется, потом из него собирается динамический код, потом всё компактизируется, и у тебя получается "боевой" GCtrace. Пока этот процесс не завершился, у тебя он вполне себе "перебивается" исполнением Lua-кода.