Найти в Дзене
После анонса задачи про верификацию оптимизаций в LuaJIT в лаборатории Tarantool мне написал студент Физтеха Алексей и сказал, что хочет
взять эту задачу в качестве дипломной работы и с сентября прошлого года мы продолжаем делать верификатор для LuaJIT. Много успели сделать и есть результаты, которыми можно поделиться. Напомню основную идею - научиться моделировать семантику LuaJIT IR с помощью SMT-LIB, декларативного LISP-подобного языка для SMT-солверов, и тем самым получить возможность проверять эквивалентность программы, представленной в виде LuaJIT до и после оптимизаций. В отличие от сравнительного тестирования верификация с помощью SMT-решателя позволяет проверить корректность на всех допустимых входах, а не только на конкретных тестовых данных...
1 день назад
Обычно для оценки степени покрытия кода фаззинг-тестированием используют покрытие по строкам/функциями и редко по ветвлениям
Метрика покрытия MC/DC редко используется для оценка покрытия регресионными тестами вообще и фаззинга в частности, хотя она позволяет получить доказательство того, что логика надежно тестируется в коде. Я сделал патч, чтобы можно было для кода PUC Rio Lua и LuaJIT собирать MC/DC покрытие, мне было интересно узнать значения метрики для этих двух проектов при тестировании нашими фаззинг-тестами. Поддержка покрытия MC/DC уже есть и в GCC и в Clang (18+ и это не возраст, а версия), так как тесты по умолчанию собираются с libFuzzer, то я использовал реализацию из LLVM/Clang. Результаты такие: Общее покрытие MC/DC для кода LuaJIT 23%, некоторые файлы покрыты лучше других, топ-3: lj_parse...
6 дней назад
In this work, we address this issue by proposing an efficient white-box checker, Emme
Our key idea is to use information that is easily provided by database systems to efficiently check the isolation level of a given transaction history. We present version certificate recovery, a method of recovering the version order and each operation’s version from the database system under test. For efficiency, we also propose the concept of an expected serialization order, which obviates the need to define and recover a version certificate for many serializable concurrency control protocols. We have implemented version certificate recovery for three widely used database systems—PostgreSQL, CockroachDB, and TiDB...
1 неделю назад
В инфраструктуру для непрерывного фаззинг-тестирования OSS-Fuzz добавлена возможность тестирования проектов, написанных на языке Lua, в дополнение к ранее поддерживаемым языкам C/C++, Go, Swift, Rust, Python, JavaScript и Java. Интеграция реализована с помощью проекта luzer, развивающего специализированный инструментарий для фаззинг-тестирования кода на языке Lua и расширений для Lua, написанных на C/C++. Проект использует библиотеку libFuzzer и может применяться совместно с инструментами AddressSanitizer, MemorySanitizer, LeakSanitizer, ThreadSanitizer и Undefined Behavior Sanitizer, позволяющих на основе выявленных в процессе фаззинг-тестирования проблем, определять наличие типовых уязвимостей, вызванных переполнениями буфера, целочисленными переполнениями, обращением к неинициализированным и освобождённым областям, утечками памяти, разыменованием указателей и проблемами с установкой блокировок. Код проекта доступен под лицензией ISC. В процессе работы luzer перебирает возможные комбинации входных данных и генерирует отчёт о всех выявленных сбоях и неперехваченных исключениях. Например, при проверке в luzer библиотеки разбора формата MsgPack antirez/lua-cmsgpack было выявлено, что данные с большим количеством массивов могут привести к переполнению стека. В рамках проекта lunapark инструментарий luzer применяется для тестирования PUC Rio Lua, трассирующего компилятора LuaJIT, высокопроизводительной СУБД и сервера приложений Tarantool, а также для тестирования сторонних Lua-модулей. www.opennet.ru/...6688
3 недели назад
Если нравится — подпишитесь
Так вы не пропустите новые публикации этого канала