diff --git a/src/assistant/help/qhelpcontentwidget.cpp b/src/assistant/help/qhelpcontentwidget.cpp
index 8f38bcfd3de322f82852543a2f3289056a459400..1deaaf95a2d9f04b113986a3200fadec1a10e9e3 100644
--- a/src/assistant/help/qhelpcontentwidget.cpp
+++ b/src/assistant/help/qhelpcontentwidget.cpp
@@ -219,6 +219,11 @@ void QHelpContentProvider::stopCollecting()
         m_abort = true;
         m_mutex.unlock();
         wait();
+        // we need to force-set m_abort to false, because the thread might either have
+        // finished between the isRunning() check and the "m_abort = true" above, or the
+        // isRunning() check might already happen after the "m_abort = false" in the run() method,
+        // either way never resetting m_abort to false from within the run() method
+        m_abort = false;
     }
     qDeleteAll(m_rootItems);
     m_rootItems.clear();