Динамическое обнаружение гонок в многопоточных Java-программах
Состояния гонки относятся к наиболее частым и неприятным ошибкам многопоточного программирования. Они возникают, когда несколько потоков несинхронизированно обращаются к общему участку памяти. Гонки очень сложно обнаружить вручную на всех этапах разработки ПО — их проявления обычно не видны сразу, а возникают они крайне редко, при очень специфическом чередовании операций в потоках. Гонки приводят к повреждению глобальных структур данных и ошибкам в работе программы, поэтому необходимость в инструменте автоматического обнаружения гонок чрезвычайно высока. В докладе мы расскажем о нашем опыте разработки детектора гонок:
- Как искать гонки в программах
- Как эффективно внедриться в ход работы Java-программы
- С какими принципиальными техническими трудностями мы столкнулись
- Как справиться с большим объемом данных.