Ситуация: есть средних размеров проектик на C++. Изредка (но регулярно) падает в случайных местах, по всем признакам портится память.
После долгих поисков выяснилось, что в одной из функций (которая в процессе эволюции проекта стала многопоточной) вызывалась некая ф-ция из third party модуля.
Функция за каким-то хреном использовала глобальную переменную — экземпляр вспомогательного класса, в котором производились интенсивные манипуляции с памятью.
Т.е. ошибка программиста была в том, что он понадеялся что этот third party код является потокобезопасным, но он по факту таковым не был.
Жутко жалко кучу тупо потерянного времени ;(.
Вопрос: а есть какой-нить статический анализатор кода C++ который бы выявлял подобные проблемы? Ведь по идее можно ж вычислить одновременный доступ к глобальной переменной?
Здравствуйте, vitasR, Вы писали:
R>Вопрос: а есть какой-нить статический анализатор кода C++ который бы выявлял подобные проблемы? Ведь по идее можно ж вычислить одновременный доступ к глобальной переменной?
http://research.microsoft.com/en-us/projects/chess/faq.aspx
http://software.intel.com/en-us/articles/intel-parallel-inspector/
Что-то ничего больше из универсальных всемогуторов не вспоминается.
Здравствуйте, vitasR, Вы писали:
UPD. Нда, valgrind.org забыл
Здравствуйте, Sinix, Вы писали:
S>Здравствуйте, vitasR, Вы писали:
S>UPD. Нда, valgrind.org забыл
У нас одна команда рассказывала, что пробует сейчас ThreadSanitizer от Google.
... << RSDN@Home 1.2.0 alpha 4 rev. 1478>>
R>Вопрос: а есть какой-нить статический анализатор кода C++ который бы выявлял подобные проблемы? Ведь по идее можно ж вычислить одновременный доступ к глобальной переменной?
intel parallel inspector, тока он рантайм а не статический
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>