В прошлый понедельник вышла новая публичная версия PUC Rio Lua и хотя мы не успели сообщить о проблеме до релиза всё равно хотелось разобраться с целочисленным переполнением. Для репорта проблемы нужен репродьюсер, а у меня никак не получалось воспроизвести проблему на локальной сборке. Я стал минимизировать репро в контейнере OSS Fuzz. Получил репро на Lua и С, но с ними локально всё равно не воспроизводится. Минимизирую набор флагов компилятора, все равно локально не воспроизводится. Начинаю с нуля пошагово воспроизводить в окружении контейнера и не воспроизводится. Потом замечаю, что если путь к Lua-скрипту покороче, то воспроизводится, а если путь указывает на скрипт в отдельной директории, то не воспроизводится. Чудеса какие-то!
+++ luaL_loadbuffer_proto_test.c 2025-12-23 14:27:19.277975264 +0000
@@ -5,7 +5,7 @@
int main() {
lua_State *L = luaL_newstate();
luaL_openlibs(L);
- luaL_loadfilex(L, "/src/testdir/repro.lua");
+ luaL_loadfilex(L, "/src/testdir/lua/repro.lua");
lua_call(L, 0, 0);
lua_settop(L, 0);
lua_close(L);
Экспериментирую дальше, выясняю, что длина пути влияет на воспроизведение. Чтобы упростить воспроизведение использую локальную директорию и указываю только имя файла.
happy_new_year_2026.lua как раз подходит по длине и с ним всегда воспроизводится, локально в том числе.
Репорт в рассылке, проблема подтверждена, исправление скоро будет.