From b798fce4654739b59b2ca11e5d30123bfb2ca209 Mon Sep 17 00:00:00 2001 From: Jarek Kobus Date: Wed, 29 Sep 2021 11:42:07 +0200 Subject: [PATCH] Don't call TaskHub::addTask() directly from non-main thread Fixes: QTCREATORBUG-26335 Change-Id: I23323edd32fa1f8d5d49943e3b4c37a305e53dd2 Reviewed-by: Qt CI Bot Reviewed-by: Eike Ziller --- src/plugins/projectexplorer/taskhub.cpp | 1 + src/plugins/qtsupport/profilereader.cpp | 17 ++++++++++++----- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/plugins/projectexplorer/taskhub.cpp b/src/plugins/projectexplorer/taskhub.cpp index 856959ed0a2..1912264bb5f 100644 --- a/src/plugins/projectexplorer/taskhub.cpp +++ b/src/plugins/projectexplorer/taskhub.cpp @@ -155,6 +155,7 @@ void TaskHub::addTask(Task task) QTC_ASSERT(!task.description().isEmpty(), return); QTC_ASSERT(!task.isNull(), return); QTC_ASSERT(task.m_mark.isNull(), return); + QTC_ASSERT(QThread::currentThread() == qApp->thread(), return); if (task.file.isEmpty() || task.line <= 0) task.line = -1; diff --git a/src/plugins/qtsupport/profilereader.cpp b/src/plugins/qtsupport/profilereader.cpp index cdc77c2d9b8..905ad413eaf 100644 --- a/src/plugins/qtsupport/profilereader.cpp +++ b/src/plugins/qtsupport/profilereader.cpp @@ -58,15 +58,22 @@ ProMessageHandler::~ProMessageHandler() Core::MessageManager::writeFlashing(m_messages); } - +static void addTask(Task::TaskType type, + const QString &description, + const Utils::FilePath &file = {}, + int line = -1) +{ + QMetaObject::invokeMethod(TaskHub::instance(), [=]() { + TaskHub::addTask(BuildSystemTask(type, description, file, line)); + }); +} void ProMessageHandler::message(int type, const QString &msg, const QString &fileName, int lineNo) { if ((type & CategoryMask) == ErrorMessage && ((type & SourceMask) == SourceParser || m_verbose)) { // parse error in qmake files if (m_exact) { - TaskHub::addTask( - BuildSystemTask(Task::Error, msg, Utils::FilePath::fromString(fileName), lineNo)); + addTask(Task::Error, msg, Utils::FilePath::fromString(fileName), lineNo); } else { appendMessage(format(fileName, lineNo, msg)); } @@ -79,9 +86,9 @@ void ProMessageHandler::fileMessage(int type, const QString &msg) if (!m_verbose) return; if (m_exact && type == QMakeHandler::ErrorMessage) - TaskHub::addTask(BuildSystemTask(Task::Error, msg)); + addTask(Task::Error, msg); else if (m_exact && type == QMakeHandler::WarningMessage) - TaskHub::addTask(BuildSystemTask(Task::Warning, msg)); + addTask(Task::Warning, msg); else appendMessage(msg); }