Динамическое обнаружение гонок в многопоточных Java-программах (SECR-2012) — различия между версиями
Материал из 0x1.tv
StasFomin (обсуждение | вклад) |
StasFomin (обсуждение | вклад) |
||
<!-- <blockquote>[©]</blockquote> --> * [http://2012.secr.ru/talks/dynamic-data-race-detection-in-concurrent-java-programs Страница доклада на сайте конференции] <references/> <!-- topub --> [[Категория:SECR-2012]] [[Категория:Параллельное программирование]] [[Категория:Java]] [[Категория:Автоматизированное тестирование]] {{stats|disqus_comments=0|refresh_time=2018-10-19T21:25:512019-02-21T19:15:05.344733748823|vimeo_comments=0|vimeo_plays=846|youtube_plays=0}} |
Версия 16:15, 21 февраля 2019
Содержание
Аннотация
- Докладчики
Состояния гонки (data races) – одни из самых частых ошибок многопоточного программирования. Они возникают, когда несколько потоков обращаются к одному и тому же разделяемому участку памяти, причем одно из этих обращений – запись. Как правило, гонки опасны, поскольку они приводят к ошибкам в работе программы и повреждениям глобальных структур данных. Гонки очень сложно обнаружить вручную: их проявления не видны немедленно (в отличие, например, от взаимных блокировок – deadlocks) и они возникают только при специфическом чередовании операций в потоках.
В этом докладе мы расскажем о разработанном нами динамическом детекторе гонок, который во время работы программы собирает и анализирует информацию о ходе ее выполнения, обнаруживая гонки “на лету”. Попытки разработки подобных утилит уже неоднократно предпринимались в прошлом, однако до общедоступного, стабильного инструмента, который можно было бы использовать хотя бы на этапе промышленного тестирования (а в идеале – на нагруженных production-системах), дело не дошло. Основные причины этого заключаются в технической сложности задачи и необходимости обрабатывать большие объемы данных – грубо говоря, все обращения к разделяемым переменным/объектам и все синхронизационные операции.
Нам удалось решить или обойти эти и некоторые другие проблемы и разработать утилиту, которая активно используется для улучшения качества наших приложений. В докладе мы расскажем о нашем опыте разработки детектора гонок:
- Как искать гонки в программах
- Как эффективно внедриться в ход работы Java-программы
- С какими принципиальными техническими трудностями мы столкнулись
- Как справиться с большим объемом данных.
Видео
Слайды
Примечания и отзывы
Plays:86
Comments:0