Вопрос про ужасы многопоточности
От: vitasR  
Дата: 28.10.10 13:26
Оценка:
Ситуация: есть средних размеров проектик на C++. Изредка (но регулярно) падает в случайных местах, по всем признакам портится память.
После долгих поисков выяснилось, что в одной из функций (которая в процессе эволюции проекта стала многопоточной) вызывалась некая ф-ция из third party модуля.
Функция за каким-то хреном использовала глобальную переменную — экземпляр вспомогательного класса, в котором производились интенсивные манипуляции с памятью.

Т.е. ошибка программиста была в том, что он понадеялся что этот third party код является потокобезопасным, но он по факту таковым не был.
Жутко жалко кучу тупо потерянного времени ;(.

Вопрос: а есть какой-нить статический анализатор кода C++ который бы выявлял подобные проблемы? Ведь по идее можно ж вычислить одновременный доступ к глобальной переменной?
Re: Вопрос про ужасы многопоточности
От: Sinix  
Дата: 28.10.10 14:00
Оценка:
Здравствуйте, vitasR, Вы писали:

R>Вопрос: а есть какой-нить статический анализатор кода C++ который бы выявлял подобные проблемы? Ведь по идее можно ж вычислить одновременный доступ к глобальной переменной?

http://research.microsoft.com/en-us/projects/chess/faq.aspx
http://software.intel.com/en-us/articles/intel-parallel-inspector/

Что-то ничего больше из универсальных всемогуторов не вспоминается.
Re: Вопрос про ужасы многопоточности
От: Sinix  
Дата: 28.10.10 14:03
Оценка:
Здравствуйте, vitasR, Вы писали:

UPD. Нда, valgrind.org забыл
Re[2]: Вопрос про ужасы многопоточности
От: rsn81 Россия http://rsn81.wordpress.com
Дата: 28.10.10 14:11
Оценка: 13 (2)
Здравствуйте, Sinix, Вы писали:

S>Здравствуйте, vitasR, Вы писали:

S>UPD. Нда, valgrind.org забыл
У нас одна команда рассказывала, что пробует сейчас ThreadSanitizer от Google.
... << RSDN@Home 1.2.0 alpha 4 rev. 1478>>
Re: Вопрос про ужасы многопоточности
От: rm822 Россия  
Дата: 28.10.10 22:13
Оценка:
R>Вопрос: а есть какой-нить статический анализатор кода C++ который бы выявлял подобные проблемы? Ведь по идее можно ж вычислить одновременный доступ к глобальной переменной?
intel parallel inspector, тока он рантайм а не статический
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.