Использование системы LLVM при динамическом поиске состояний гонок в программах
Авторы: Ковега Д.Н., Крищенко В.А.
Опубликовано в выпуске: #2(14)/2013
DOI: 10.18698/2308-6033-2013-2-549
Раздел: Информационные технологии
В многопоточных программах может возникать состояние гонок ввиду отсутствия синхронизации при доступе к памяти. Для сбора информации о событиях динамическими методами выявления таких гонок требуется либо виртуальная машина, либо инструментирование исполняемого кода. В работе предложен метод динамического поиска гонок, использующий отношение предшествования и ограничение истории обращений. Метод реализован для анализа программ на языке С, для инструментирования исходного кода на этапе трансляции используется система LLVM. Как показывают проведенные эксперименты, применение предложенного метода позволяет сохранить накладные расходы на поиск гонок на приемлемом уровне.
Литература
[1] Nethercote N., Seward J. Valgrind: A framework for heavy-weight dynamic binary instrumentation // Proc. of the 2007 Programming Language Design and Implementation Conf. 2007. Vol. 26. No 6. P. 89–100.
[2] Marino D., Musuvathi M., Narayanasamy S. LiteRace: effective sampling for lightweight data-race detection // PLDI. 2009.
[3] LLVM Programmer’s Manual. URL: http://llvm.org/docs/ProgrammersManual.html
[4] A theory of data race detection / U. Banerjee, B. Bliss, Z. Ma, P. Petersen // Proc. of the 2006 Workshop on Parallel and Distributed Systems: Testing and Debugging. PADTAD’06. N. Y.: ACM, 2006. P. 69–78.
[5] Lamport L. Time, Clocks and the Ordering of Events in a Distributed System // Communications of the ACM. 1978. Vol. 21. No 7. P. 558–565.
[6] Serebryany K., Iskhodzhanov T. ThreadSanitizer: Data race detection in practice // Proc. of the Workshop on Binary Instrumentation and Applications. WBIA’09. N. Y.: ACM, 2009. P. 62–71.