Details
-
Bug
-
Resolution: Incomplete
-
P1: Critical
-
None
-
6.2.4
-
None
-
Windows 10
Description
Crash in QFontEngineMulti destructor on QFontCache::clear()
Unhandled exception thrown: read access violation. **fontEngine** was 0xFFFFFFFFFFFFFFF3.
I see a lot of such crashes on Qt 6.2.4 among users crash reports.
It's never reproduced for me locally and I have no idea how to simulate this.
Stack trace:
[Inline Frame] Qt6Gui.dll!std::_Atomic_integral<int,4>::operator--() Line 1598 C++ [Inline Frame] Qt6Gui.dll!QAtomicOps<int>::deref(std::atomic<int> &) Line 287 C++ [Inline Frame] Qt6Gui.dll!QBasicAtomicInteger<int>::deref() Line 102 C++ > Qt6Gui.dll!QFontEngineMulti::~QFontEngineMulti() Line 1736 C++ [External Code] Qt6Gui.dll!QFontCache::clear() Line 2942 C++ Qt6Gui.dll!QFontCache::~QFontCache() Line 2899 C++ [External Code] Qt6Core.dll!QThreadStorageData::finish(void * * p) Line 202 C++ Qt6Core.dll!QThreadPrivate::finish(void * arg, bool lockAnyway) Line 345 C++ Qt6Core.dll!QThreadPrivate::start(void * arg) Line 329 C++ [External Code]
At the same time UI thread is waiting while QSGRenderThread is finished on destroying a Window
> Qt6Core.dll!QThread::wait(QDeadlineTimer deadline) Line 537 C++ Qt6Quick.dll!QSGThreadedRenderLoop::releaseResources(QSGThreadedRenderLoop::Window * w, bool inDestructor) Line 1474 C++ Qt6Quick.dll!QSGThreadedRenderLoop::windowDestroyed(QQuickWindow * window) Line 1164 C++ Qt6Quick.dll!QQuickWindow::~QQuickWindow() Line 1132 C++ [External Code] [Inline Frame] Qt6Core.dll!qDeleteInEventHandler(QObject *) Line 4778 C++ Qt6Core.dll!QObject::event(QEvent * e) Line 1396 C++ Qt6Gui.dll!QWindow::event(QEvent * ev) Line 2550 C++ Qt6Widgets.dll!QApplicationPrivate::notify_helper(QObject * receiver, QEvent * e) Line 3411 C++ Qt6Widgets.dll!QApplication::notify(QObject * receiver, QEvent * e) Line 3363 C++ Qt6Core.dll!QCoreApplication::notifyInternal2(QObject * receiver, QEvent * event) Line 1067 C++ [Inline Frame] Qt6Core.dll!QCoreApplication::sendEvent(QObject *) Line 1475 C++ Qt6Core.dll!QCoreApplicationPrivate::sendPostedEvents(QObject * receiver, int event_type, QThreadData * data) Line 1834 C++ Qt6Gui.dll!QWindowsGuiEventDispatcher::sendPostedEvents() Line 80 C++ Qt6Core.dll!QEventDispatcherWin32::processEvents(QFlags<enum QEventLoop::ProcessEventsFlag> flags) Line 476 C++ Qt6Gui.dll!QWindowsGuiEventDispatcher::processEvents(QFlags<enum QEventLoop::ProcessEventsFlag> flags) Line 73 C++ [Inline Frame] Qt6Core.dll!QEventLoop::processEvents(QFlags<enum QEventLoop::ProcessEventsFlag>) Line 139 C++ Qt6Core.dll!QEventLoop::exec(QFlags<enum QEventLoop::ProcessEventsFlag> flags) Line 230 C++ Qt6Core.dll!QCoreApplication::exec() Line 1382 C++
I don't know what is a working thread where QFontCache live, never experienced with this before. But at first glance it looks like some race condition on the Window destruction.
Attachments
Issue Links
- is duplicated by
-
QTBUG-103269 [Windows] Crash on QFontEngineMulti::ascent()
- Closed