Динамическое обнаружение зависимости от порядка вычислений в программах на Си
Аннотация
В работе предложена модель обнаружения зависимости от порядка вычислений подвыражений в программах на языке Си. Модель представляет отношение sequenced-before стандарта C11 в виде иерархической структуры, допускающей эффективный поиск неупорядоченных и неопределённо-упорядоченных модификаций во время исполнения. Программная реализация модели в виде санитайзера для GCC произвела срабатывания на 139 из 4526 пакетов Alpine Linux 3.23, преимущественно фиксируя неопределённо-упорядоченные вычисления.
Об авторах
Артем Юрьевич КЛИМОВРоссия
Магистрант Московского физико-технического института. Научные интересы: компиляторы, динамический анализ программ, санитайзеры, неопределённое поведение.
Александр Владимирович МОНАКОВ
Россия
Старший научный сотрудник отдела компиляторных технологий ИСП РАН. Научные интересы: компиляторные технологии, оптимизация программ
Владислав Анатольевич ИВАНИШИН
Россия
Научный сотрудник отдела компиляторных технологий ИСП РАН. Научные интересы включают в себя компиляторные технологии, безопасность программного обеспечения, методы статического и динамического анализа программ.
Дмитрий Михайлович МЕЛЬНИК
Россия
Старший научный сотрудник отдела компиляторных технологий ИСП РАН. Научные интересы: компиляторные оптимизации, динамическая (JIT) компиляция.
Список литературы
1. MITRE Corporation. CVE-2009-1897: Linux kernel TUN/TAP NULL pointer dereference. 2009. URL: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-1897.
2. Nethercote Nicholas, Seward Julian. Valgrind: A Framework for Heavyweight Dynamic Binary Instrumentation. 2007. URL: https://valgrind.org/.
3. LLVM Project. AddressSanitizer — Clang documentation. 2024. URL: https://clang.llvm.org/docs/AddressSanitizer.html.
4. LLVM Project. UndefinedBehaviorSanitizer — Clang documentation. 2024. URL: https://clang.llvm.org/docs/UndefinedBehaviorSanitizer.html.
5. International Organization for Standardization. ISO/IEC 9899:2011. Programming Languages — C. 2011. URL: https://www.iso.org/standard/57853.html.
6. International Organization for Standardization. ISO/IEC 9899:1999. Programming Languages — C. 1999. URL: https://www.iso.org/standard/29237.html.
7. International Organization for Standardization. ISO/IEC 14882:2017. Programming Languages — C++. 2017. URL: https://www.iso.org/standard/68564.html.
8. Free Software Foundation. Using the GNU Compiler Collection (GCC). 2024. URL: https://gcc.gnu.org/onlinedocs/gcc/.
9. Институт системного программирования им. В. П. Иванникова РАН. Svace: статический анализатор исходного кода. 2024. URL: https://www.ispras.ru/technologies/svace/.
10. Климов А.Ю. Автоматическое обнаружение гонок при параллельной сборке с использованием утилиты Make. Доклад на конференции OS DAY 2024, ИСП РАН. URL: https://osday.ru/2024/klimov.html.
11. Linux kernel contributors. Complete virtual memory map of 64-bit x86. 2024. URL: https://www.kernel.org/doc/html/latest/arch/x86/x86_64/mm.html.
12. Institute of Electrical and Electronics Engineers. IEEE Std 1003.1-2001/Cor 2-2004 (POSIX.1-2001 Technical Corrigendum 2). Standard for Information Technology — Portable Operating System Interface (POSIX). 2004. URL: https://pubs.opengroup.org/onlinepubs/009695399/functions/swapcontext.html.
13. Institute of Electrical and Electronics Engineers. IEEE Std 1003.1-2008 (POSIX.1-2008). Standard for Information Technology — Portable Operating System Interface (POSIX). 2008. URL: https://pubs.opengroup.org/onlinepubs/9699919799/.
Рецензия
Для цитирования:
КЛИМОВ А.Ю., МОНАКОВ А.В., ИВАНИШИН В.А., МЕЛЬНИК Д.М. Динамическое обнаружение зависимости от порядка вычислений в программах на Си. Труды Института системного программирования РАН. Препринт 33. 38(доп.вып. 1):50.
For citation:
KLIMOV A.Yu., MONAKOV A.V., IVANISHIN V.A., MELNIK D.M. Dynamic Detection of Evaluation-order Dependence in C Programs. Proceedings of the Institute for System Programming of the RAS (Proceedings of ISP RAS). Preprint 33. 38(доп.вып. 1):50. (In Russ.)






