Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-90876

QShGetFileInfoThread never gets destroyed

    XMLWordPrintable

Details

    • Bug
    • Resolution: Fixed
    • P2: Important
    • 6.8.0 FF
    • 5.15.2
    • QPA: Windows
    • None
    • Windows
    • 87f7d2c6b (dev), 505559c4a (dev)

    Description

      Create a tree view with a QFileSystemModel. Upon painting a QShGetFileInfoThread is created in function 'shGetFileInfoBackground'

      {{ static QShGetFileInfoThread *getFileInfoThread = nullptr;}}
      {{ if (!getFileInfoThread) {}}
         getFileInfoThread = new QShGetFileInfoThread;
         getFileInfoThread->start();
      {{ }}}

      but this thread will never be canceled (deleted) anymore. Except a final call to 'shGetFileInfoBackground' times out!

      Call stack{{}}

      {{ Qt5Cored.dll!QThread::QThread(QObject * parent) Zeile 418 C++}}
      {{ qwindowsd.dll!QShGetFileInfoThread::QShGetFileInfoThread() Zeile 159 C++}}
      {{ qwindowsd.dll!shGetFileInfoBackground(const QString & fileName, unsigned long attributes, _SHFILEINFOW * info, unsigned int flags, __int64 timeOutMSecs) Zeile 230 C++}}
      {{ qwindowsd.dll!QWindowsFileIconEngine::filePixmap(const QSize & size, QIcon::Mode __formal, QIcon::State __formal) Zeile 965 C++}}
      {{ qwindowsd.dll!QAbstractFileIconEngine::pixmap(const QSize & size, QIcon::Mode mode, QIcon::State state) Zeile 74 C++}}
      {{ Qt5Guid.dll!QPixmapIconEngine::paint(QPainter * painter, const QRect & rect, QIcon::Mode mode, QIcon::State state) Zeile 200 C++}}
      {{ Qt5Guid.dll!QIcon::paint(QPainter * painter, const QRect & rect, QFlags<enum Qt::AlignmentFlag> alignment, QIcon::Mode mode, QIcon::State state) Zeile 972 C++}}
      {{ Qt5Widgetsd.dll!QCommonStyle::drawControl(QStyle::ControlElement element, const QStyleOption * opt, QPainter * p, const QWidget * widget) Zeile 2314 C++}}
      {{ Qt5Widgetsd.dll!QWindowsStyle::drawControl(QStyle::ControlElement ce, const QStyleOption * opt, QPainter * p, const QWidget * widget) Zeile 1865 C++}}
      {{ qwindowsvistastyled.dll!QWindowsXPStyle::drawControl(QStyle::ControlElement element, const QStyleOption * option, QPainter * p, const QWidget * widget) Zeile 2453 C++}}
      {{ qwindowsvistastyled.dll!QWindowsVistaStyle::drawControl(QStyle::ControlElement element, const QStyleOption * option, QPainter * painter, const QWidget * widget) Zeile 1467 C++}}
      {{ Qt5Widgetsd.dll!QStyledItemDelegate::paint(QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index) Zeile 390 C++}}
      {{ Qt5Widgetsd.dll!QTreeView::drawRow(QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index) Zeile 1764 C++}}
      {{ Qt5Widgetsd.dll!QTreeView::drawTree(QPainter * painter, const QRegion & region) Zeile 1504 C++}}
      {{ Qt5Widgetsd.dll!QTreeView::paintEvent(QPaintEvent * event) Zeile 1334 C++}}
      {{ Qt5Widgetsd.dll!QWidget::event(QEvent * event) Zeile 8801 C++}}
      {{ Qt5Widgetsd.dll!QFrame::event(QEvent * e) Zeile 550 C++}}
      {{ Qt5Widgetsd.dll!QAbstractScrollArea::viewportEvent(QEvent * e) Zeile 1095 C++}}
      {{ Qt5Widgetsd.dll!QAbstractItemView::viewportEvent(QEvent * event) Zeile 1747 C++}}
      {{ Qt5Widgetsd.dll!QTreeView::viewportEvent(QEvent * event) Zeile 1315 C++}}
      {{ Qt5Widgetsd.dll!QAbstractScrollAreaPrivate::viewportEvent(QEvent * event) Zeile 111 C++}}
      {{ Qt5Widgetsd.dll!QAbstractScrollAreaFilter::eventFilter(QObject * o, QEvent * e) Zeile 122 C++}}
      {{ Qt5Cored.dll!QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject * receiver, QEvent * event) Zeile 1189 C++}}
      {{ Qt5Widgetsd.dll!QApplicationPrivate::notify_helper(QObject * receiver, QEvent * e) Zeile 3626 C++}}
      {{ Qt5Widgetsd.dll!QApplication::notify(QObject * receiver, QEvent * e) Zeile 3582 C++}}
      {{ Qt5Cored.dll!QCoreApplication::notifyInternal2(QObject * receiver, QEvent * event) Zeile 1063 C++}}
      {{ Qt5Cored.dll!QCoreApplication::sendSpontaneousEvent(QObject * receiver, QEvent * event) Zeile 1470 C++}}
      {{ Qt5Widgetsd.dll!QWidgetPrivate::sendPaintEvent(const QRegion & toBePainted) Zeile 5467 C++}}
      {{ Qt5Widgetsd.dll!QWidgetPrivate::drawWidget(QPaintDevice * pdev, const QRegion & rgn, const QPoint & offset, QFlags<enum QWidgetPrivate::DrawWidgetFlag> flags, QPainter * sharedPainter, QWidgetRepaintManager * repaintManager) Zeile 5420 C++}}
      {{ Qt5Widgetsd.dll!QWidgetPrivate::paintSiblingsRecursive(QPaintDevice * pdev, const QList<QObject *> & siblings, int index, const QRegion & rgn, const QPoint & offset, QFlags<enum QWidgetPrivate::DrawWidgetFlag> flags, QPainter * sharedPainter, QWidgetRepaintManager * repaintManager) Zeile 5599 C++}}
      {{ Qt5Widgetsd.dll!QWidgetPrivate::paintSiblingsRecursive(QPaintDevice * pdev, const QList<QObject *> & siblings, int index, const QRegion & rgn, const QPoint & offset, QFlags<enum QWidgetPrivate::DrawWidgetFlag> flags, QPainter * sharedPainter, QWidgetRepaintManager * repaintManager) Zeile 5586 C++}}
      {{ Qt5Widgetsd.dll!QWidgetPrivate::paintSiblingsRecursive(QPaintDevice * pdev, const QList<QObject *> & siblings, int index, const QRegion & rgn, const QPoint & offset, QFlags<enum QWidgetPrivate::DrawWidgetFlag> flags, QPainter * sharedPainter, QWidgetRepaintManager * repaintManager) Zeile 5586 C++}}
      {{ Qt5Widgetsd.dll!QWidgetPrivate::drawWidget(QPaintDevice * pdev, const QRegion & rgn, const QPoint & offset, QFlags<enum QWidgetPrivate::DrawWidgetFlag> flags, QPainter * sharedPainter, QWidgetRepaintManager * repaintManager) Zeile 5461 C++}}
      {{ Qt5Widgetsd.dll!QWidgetPrivate::paintSiblingsRecursive(QPaintDevice * pdev, const QList<QObject *> & siblings, int index, const QRegion & rgn, const QPoint & offset, QFlags<enum QWidgetPrivate::DrawWidgetFlag> flags, QPainter * sharedPainter, QWidgetRepaintManager * repaintManager) Zeile 5599 C++}}
      {{ Qt5Widgetsd.dll!QWidgetPrivate::paintSiblingsRecursive(QPaintDevice * pdev, const QList<QObject *> & siblings, int index, const QRegion & rgn, const QPoint & offset, QFlags<enum QWidgetPrivate::DrawWidgetFlag> flags, QPainter * sharedPainter, QWidgetRepaintManager * repaintManager) Zeile 5586 C++}}
      {{ Qt5Widgetsd.dll!QWidgetPrivate::paintSiblingsRecursive(QPaintDevice * pdev, const QList<QObject *> & siblings, int index, const QRegion & rgn, const QPoint & offset, QFlags<enum QWidgetPrivate::DrawWidgetFlag> flags, QPainter * sharedPainter, QWidgetRepaintManager * repaintManager) Zeile 5586 C++}}
      {{ Qt5Widgetsd.dll!QWidgetPrivate::drawWidget(QPaintDevice * pdev, const QRegion & rgn, const QPoint & offset, QFlags<enum QWidgetPrivate::DrawWidgetFlag> flags, QPainter * sharedPainter, QWidgetRepaintManager * repaintManager) Zeile 5461 C++}}
      {{ Qt5Widgetsd.dll!QWidgetPrivate::paintSiblingsRecursive(QPaintDevice * pdev, const QList<QObject *> & siblings, int index, const QRegion & rgn, const QPoint & offset, QFlags<enum QWidgetPrivate::DrawWidgetFlag> flags, QPainter * sharedPainter, QWidgetRepaintManager * repaintManager) Zeile 5599 C++}}
      {{ Qt5Widgetsd.dll!QWidgetPrivate::drawWidget(QPaintDevice * pdev, const QRegion & rgn, const QPoint & offset, QFlags<enum QWidgetPrivate::DrawWidgetFlag> flags, QPainter * sharedPainter, QWidgetRepaintManager * repaintManager) Zeile 5461 C++}}
      {{ Qt5Widgetsd.dll!QWidgetPrivate::paintSiblingsRecursive(QPaintDevice * pdev, const QList<QObject *> & siblings, int index, const QRegion & rgn, const QPoint & offset, QFlags<enum QWidgetPrivate::DrawWidgetFlag> flags, QPainter * sharedPainter, QWidgetRepaintManager * repaintManager) Zeile 5599 C++}}
      {{ Qt5Widgetsd.dll!QWidgetPrivate::paintSiblingsRecursive(QPaintDevice * pdev, const QList<QObject *> & siblings, int index, const QRegion & rgn, const QPoint & offset, QFlags<enum QWidgetPrivate::DrawWidgetFlag> flags, QPainter * sharedPainter, QWidgetRepaintManager * repaintManager) Zeile 5586 C++}}
      {{ Qt5Widgetsd.dll!QWidgetPrivate::paintSiblingsRecursive(QPaintDevice * pdev, const QList<QObject *> & siblings, int index, const QRegion & rgn, const QPoint & offset, QFlags<enum QWidgetPrivate::DrawWidgetFlag> flags, QPainter * sharedPainter, QWidgetRepaintManager * repaintManager) Zeile 5586 C++}}
      {{ Qt5Widgetsd.dll!QWidgetPrivate::paintSiblingsRecursive(QPaintDevice * pdev, const QList<QObject *> & siblings, int index, const QRegion & rgn, const QPoint & offset, QFlags<enum QWidgetPrivate::DrawWidgetFlag> flags, QPainter * sharedPainter, QWidgetRepaintManager * repaintManager) Zeile 5586 C++}}
      {{ Qt5Widgetsd.dll!QWidgetPrivate::drawWidget(QPaintDevice * pdev, const QRegion & rgn, const QPoint & offset, QFlags<enum QWidgetPrivate::DrawWidgetFlag> flags, QPainter * sharedPainter, QWidgetRepaintManager * repaintManager) Zeile 5461 C++}}
      {{ Qt5Widgetsd.dll!QWidgetRepaintManager::paintAndFlush() Zeile 1012 C++}}
      {{ Qt5Widgetsd.dll!QWidgetRepaintManager::sync(QWidget * exposedWidget, const QRegion & exposedRegion) Zeile 744 C++}}
      {{ Qt5Widgetsd.dll!QWidgetPrivate::syncBackingStore(const QRegion & region) Zeile 1767 C++}}
      {{ Qt5Widgetsd.dll!QWidgetWindow::handleExposeEvent(QExposeEvent * event) Zeile 1028 C++}}
      {{ Qt5Widgetsd.dll!QWidgetWindow::event(QEvent * event) Zeile 348 C++}}
      {{ Qt5Widgetsd.dll!QApplicationPrivate::notify_helper(QObject * receiver, QEvent * e) Zeile 3632 C++}}
      {{ Qt5Widgetsd.dll!QApplication::notify(QObject * receiver, QEvent * e) Zeile 2972 C++}}
      {{ Qt5Cored.dll!QCoreApplication::notifyInternal2(QObject * receiver, QEvent * event) Zeile 1063 C++}}
      {{ Qt5Cored.dll!QCoreApplication::sendSpontaneousEvent(QObject * receiver, QEvent * event) Zeile 1470 C++}}
      {{ Qt5Guid.dll!QGuiApplicationPrivate::processExposeEvent(QWindowSystemInterfacePrivate::ExposeEvent * e) Zeile 3258 C++}}
      {{ Qt5Guid.dll!QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent * e) Zeile 2070 C++}}
      {{ Qt5Guid.dll!QWindowSystemInterface::sendWindowSystemEvents(QFlags<enum QEventLoop::ProcessEventsFlag> flags) Zeile 1169 C++}}
      {{ Qt5Guid.dll!QWindowSystemInterface::flushWindowSystemEvents(QFlags<enum QEventLoop::ProcessEventsFlag> flags) Zeile 1138 C++}}
      {{ qwindowsd.dll!QWindowsWindow::handleWmPaint(HWND__ * hwnd, unsigned int message, unsigned int __formal, long __formal) Zeile 2113 C++}}
      {{ qwindowsd.dll!QWindowsContext::windowsProc(HWND__ * hwnd, unsigned int message, QtWindows::WindowsEventType et, unsigned int wParam, long lParam, long * result, QWindowsWindow * * platformWindowPtr) Zeile 1337 C++}}
      {{ qwindowsd.dll!qWindowsWndProc(HWND__ * hwnd, unsigned int message, unsigned int wParam, long lParam) Zeile 1683 C++}}
      {{ user32.dll!__InternalCallWinProc@20() Unbekannt}}
      {{ user32.dll!UserCallWinProcCheckWow() Unbekannt}}
      {{ user32.dll!DispatchClientMessage() Unbekannt}}
      {{ user32.dll!___fnDWORD@4() Unbekannt}}
      {{ ntdll.dll!_KiUserCallbackDispatcher@12() Unbekannt}}
      {{ user32.dll!_DispatchMessageW@4() Unbekannt}}
      {{ Qt5Cored.dll!QEventDispatcherWin32::processEvents(QFlags<enum QEventLoop::ProcessEventsFlag> flags) Zeile 608 C++}}
      {{ qwindowsd.dll!QWindowsGuiEventDispatcher::processEvents(QFlags<enum QEventLoop::ProcessEventsFlag> flags) Zeile 73 C++}}
      {{ Qt5Cored.dll!QEventLoop::processEvents(QFlags<enum QEventLoop::ProcessEventsFlag> flags) Zeile 140 C++}}
      {{ Qt5Cored.dll!QEventLoop::exec(QFlags<enum QEventLoop::ProcessEventsFlag> flags) Zeile 232 C++}}
      {{ Qt5Cored.dll!QCoreApplication::exec() Zeile 1371 C++}}
      {{ Qt5Guid.dll!QGuiApplication::exec() Zeile 1868 C++}}
      {{ Qt5Widgetsd.dll!QApplication::exec() Zeile 2825 C++}}

       

      Attachments

        For Gerrit Dashboard: QTBUG-90876
        # Subject Branch Project Status CR V

        Activity

          People

            qt.team.quick.subscriptions Qt Quick and Widgets Team
            makis42 Gerasimos Karvounis
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes