Russian Qt Forum
Ноябрь 22, 2024, 03:49 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: thread sanitizer  (Прочитано 3329 раз)
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« : Февраль 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();});
В openGeometryFile() вызывается std::async, но предупреждение возникает и тогда, когда программа ниразу эту функцию не дёргает

Как интерпретировать диагностику?
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")
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #1 : Февраль 04, 2021, 09:30 »

Думается "когда нитка была создана" ничего не дает. Я задавал останов и смотрел где/как происходит race. Напр QListData - что делает нитка T7 ? При останове весь ее стек виден. А что в это же время делает T9 ?  Не пишут ли они в один QList ?

Кстати: на своей платформе мне так и не удалось подружить sanitizer с omp, хотя эта проблема известна и вроде бы решаема.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.134 секунд. Запросов: 22.