Название: thread sanitizer Отправлено: __Heaven__ от Февраль 03, 2021, 23:39 Всем привет!
Крайне мало работал с многопоточностью и детектом ошибок В моём qt приожении преимущественно используется omp на циклах for. Имеется 1 std::async, который работает пока парсится файл при открытии, а основной поток прогресс отображает Скомпилил с thread sanitizer и получил неясный результат (аттач) Не понимаю, в чём проблема, halp! Место создания Т9: AboutDlg создаётся на стэке в MainWindow, который как родитель передаётся в списке инициализации конструктора. Место создания Т19: функция, которая вызывается конструктором MainWindow, конкретная строчка: Код: connect(ui->openGeometryAct, &QAction::triggered, [this]{openGeometryFile();}); Как интерпретировать диагностику? archlinux clang version 11.0.1 extra/qt5-base 5.15.2-3 Код: set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fsanitize=thread -O0") Название: Re: thread sanitizer Отправлено: Igors от Февраль 04, 2021, 09:30 Думается "когда нитка была создана" ничего не дает. Я задавал останов и смотрел где/как происходит race. Напр QListData - что делает нитка T7 ? При останове весь ее стек виден. А что в это же время делает T9 ? Не пишут ли они в один QList ?
Кстати: на своей платформе мне так и не удалось подружить sanitizer с omp, хотя эта проблема известна и вроде бы решаема. |