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