УДК 004.415.53
Использование системы LLVM
при динамическом поиске
состояний гонок в программах <...> Н.Э. Баумана, Москва, 105005, Россия
В многопоточных программах может возникать состояние гонок
ввиду отсутствия синхронизации при доступе к памяти. <...> Для сбора
информации о событиях динамическими методами выявления таких
гонок требуется либо виртуальная машина, либо инструментирование исполняемого кода. <...> В работе предложен метод динамического
поиска гонок, использующий отношение предшествования и ограничение истории обращений. <...> Метод реализован для анализа программ
на языке С, для инструментирования исходного кода на этапе трансляции используется система LLVM. <...> Как показывают проведенные
эксперименты, применение предложенного метода позволяет сохранить накладные расходы на поиск гонок на приемлемом уровне. <...> E-mail: arhibot@gmail.com, kva@bmstu.ru
Ключевые слова: состояния гонок, динамический поиск гонок, инструментирование кода, тестирование многопоточных программ, LLVM. <...> При разработке параллельных приложений часто возникают
трудные в локализации ошибки, вызванные нарушениями в синхронизации доступа потоков в общей памяти, которые приводят к состоянию гонки между потоками. <...> Для поиска состояний гонок при работе
с разделяемой памятью в многопоточных программах существуют
инструменты нескольких классов, наиболее применимым являются
средства динамического поиска гонок. <...> Такие средства во время выполнения программы ведут историю обращений к памяти и операций
синхронизации для дальнейшего анализа. <...> Генерация потока событий при динамическом поиске гонок может
реализоваться либо при исполнении программы в виртуальной машине,
либо посредством модификации кода программы для сбора информации о доступе к памяти и к функциям синхронизации. <...> Существующие
реализации на базе виртуальной машины, такие как Helgrind [1] и
Thread Checker, осуществляют интерпретацию исполняемого файла, что
позволяет проводить анализ программы и используемых <...>