Details
-
Bug
-
Resolution: Fixed
-
P2: Important
-
5.15.2
-
None
-
-
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 |
526062,3 | QPA/Windows: misc cleanup of QShGetFileInfoThread | dev | qt/qtbase | Status: MERGED | +2 | 0 |
527583,5 | QPA/Windows: Cleanup QShGetFileInfoThread on shutdown | dev | qt/qtbase | Status: MERGED | +2 | 0 |