Найти в Дзене
Протестировал

В прошлый понедельник вышла новая публичная версия 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); Экспериментирую дальше, выясняю, что длина пути влияет на воспроизведе

В прошлый понедельник вышла новая публичная версия 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 как раз подходит по длине и с ним всегда воспроизводится, локально в том числе.

Репорт в рассылке, проблема подтверждена, исправление скоро будет.