Preview

Труды Института системного программирования РАН

Расширенный поиск

Инструмент для поиска гонок по данным RaceHunter

https://doi.org/10.15514/ISPRAS-2023-35(6)-8

Аннотация

. Гонки по данным - это ошибки в многопоточных программах, возникающие, когда два потока выполняют доступ к одной ячейке памяти без синхронизации. Гонки по данным трудно находить и отлаживать. В этой статье представлен метод динамического поиска гонок по данным RaceHunter, который выполняет мониторинг многопоточной программы, выявляет конфликтующие доступы к памяти и систематически проверяет их на гонки по данным. RaceHunter не выдаёт ложных сообщений о гонках по данным, когда программа использует нестандартные примитивы синхронизации или неизвестные способы синхронизации потоков, и может находить гонки по данным, которые упускают другие подходы. Инструменты динамического поиска гонок по данным могут использоваться для мониторинга длительных выполнений программы либо для проверки относительно непродолжительных выполнений, инициированных тестами. Последнее - основной сценарий использования RaceHunter.

Об авторе

Евгений Анатольевич ГЕРЛИЦ
Институт системного программирования РАН
Россия

Научный сотрудник отдела технологий программирования
ИСП РАН. Область научных интересов: методы контроля и обеспечения качества программного обеспечения, методы динамической и статической верификации и анализа программ, формальные методы.



Список литературы

1. M. Naik, A. Aiken и J. Whaley. Effective static race detection for java. В Proceedings of the 27th ACM SIGPLAN Conference on Programming Language Design and Implementation, страницы 308—319, 2006.

2. P. Andrianov и V. Mutilin. Scalable thread-modular approach for data race detection. В

3. International Workshop on Frontiers in Software Engineering Education, страницы 371—385. Springer, 2019.

4. P. Pratikakis, J. S. Foster и M. Hicks. Locksmith: practical static race detection for c. ACM Transactions on Programming Languages and Systems (TOPLAS), 33(1):1—55, 2011.

5. L. Lamport. Time, clocks, and the ordering of events in a distributed system. 2019, страницы 179—196. DOI: 10.1145/3335772.3335934.

6. K. Serebryany и T. Iskhodzhanov. Threadsanitizer: data race detection in practice. В Proceedings of the Workshop on Binary Instrumentation and Applications, страницы 62—71, 2009. DOI: 10.1145/1791194.1791203.

7. S. Savage, M. Burrows, G. Nelson, P. Sobalvarro и T. Anderson. Eraser: a dynamic data race detector for multithreaded programs. ACM Trans. Comput. Syst., 15:391—411, 1997. DOI: 10.1145/265924.265927.

8. J. Erickson, M. Musuvathi, S. Burckhardt и K. Olynyk. Effective data-race detection for the kernel. В 9th USENIX Symposium on Operating Systems Design and Implementation (OSDI 10), 2010.

9. The kernel concurrency sanitizer, The Linux Kernel Organization. URL: https://docs.kernel.org/dev-tools/kcsan.html (дата обращения 26.10.2023).

10. LLVM language reference manual. URL: https://llvm.org/docs/LangRef.html (дата обращения 20.11.2023).

11. Clang: a c language family frontend for llvm. URL: https://clang.llvm.org (дата обращения 20.11.2023).

12. K. Serebryany, A. Potapenko, T. Iskhodzhanov и D. Vyukov. Dynamic race detection with llvm compiler: compile-time instrumentation for threadsanitizer. В International Conference on Runtime Verification, страницы 110—114. Springer, 2011.

13. D. Marino, M. Musuvathi и S. Narayanasamy. Literace: effective sampling for lightweight data-race detection. В Proceedings of the 30th ACM SIGPLAN Conference on Programming Language Design and Implementation, страницы 134—143, 2009.

14. Information technology Portable Operating System Interface (POSIX ®) Base specifications. Standard, International Organization for Standardization, Geneva, CH, сент. 2009.

15. J. Mellor-Crummey. On-the-fly detection of data races for programs with nested fork-join parallelism. В Proceedings of the 1991 ACM/IEEE Conference on Supercomputing, страницы 24—33, 1991.

16. Lamport. How to make a multiprocessor computer that correctly executes multiprocess programs. IEEE transactions on computers, 100(9):690—691, 1979.

17. L. Lamport. The pluscal algorithm language. В International Colloquium on Theoretical Aspects of Computing, страницы 36—60. Springer, 2009.

18. V. Cheptsov и A. Khoroshilov. Robust resource partitioning approach for arinc 653 rtos. [18]. F. Bellard. Qemu, a fast and portable dynamic translator. В USENIX annual technical conference, FREENIX Track, том 41, страница 46. Califor-nia, USA, 2005.

19. C. Holler, K. Herzig и A. Zeller. Fuzzing with code fragments. В 21st USENIX Security Symposium (USENIX Security 12), страницы 445—458, 2012.

20. Libfuzzer – a library for coverage-guided fuzz testing. URL: https://llvm.org/docs/LibFuzzer.html (дата обращения 26.10.2023).

21. S. Sargsyan, J. Hakobyan, M. Mehrabyan, M. Mishechkin, V. Akozin и S. Kurmangaleev.

22. Isp-fuzzer: extendable fuzzing framework. В 2019 Ivannikov Memorial Workshop (IVMEM), страницы 68—71, 2019. DOI: 10.1109/IVMEM.2019.00017.

23. K. Sen. Race directed random testing of concurrent programs. В Proceedings of the 29th ACM SIGPLAN Conference on Programming Language Design and Implementation, страницы 11—21, 2008.

24. C.-S. Park, K. Sen, P. Hargrove и C. Iancu. Efficient data race detection for distributed memory parallel programs. В Proceedings of 2011 International Conference for High Performance Computing, Networking, Storage and Analysis, страницы 1—12, 2011.

25. Leblanc. Debugging parallel programs with instant replay. IEEE Transactions on Computers, 100(4):471—482, 1987.

26. P. Dovgalyuk. Deterministic replay of system’s execution with multi-target qemu simulator for dynamic analysis and reverse debugging. В CSMR, страницы 553—556, 2012.

27. R. H. Netzer. Optimal tracing and replay for debugging shared-memory parallel programs. В Proceedings of the 1993 ACM/ONR workshop on Parallel and distributed debugging, страницы 1—11, 1993.

28. D. F. Bacon и S. C. Goldstein. Hardware-assisted replay of multiprocessor programs. ACM SIGPLAN Notices, 26(12):194—206, 1991.


Рецензия

Для цитирования:


ГЕРЛИЦ Е.А. Инструмент для поиска гонок по данным RaceHunter. Труды Института системного программирования РАН. 2023;35(6):135-156. https://doi.org/10.15514/ISPRAS-2023-35(6)-8

For citation:


GERLITS E.A. RaceHunter Dynamic Data Race Detector. Proceedings of the Institute for System Programming of the RAS (Proceedings of ISP RAS). 2023;35(6):135-156. (In Russ.) https://doi.org/10.15514/ISPRAS-2023-35(6)-8



Creative Commons License
Контент доступен под лицензией Creative Commons Attribution 4.0 License.


ISSN 2079-8156 (Print)
ISSN 2220-6426 (Online)