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

[Windows] Crash on QFontEngineMulti::ascent()

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Closed
    • Priority: P1: Critical
    • Resolution: Duplicate
    • Affects Version/s: 6.2.4
    • Fix Version/s: None
    • Component/s: GUI: Font handling
    • Labels:
      None
    • Environment:
      Windows 10
    • Platform/s:
      Windows

      Description

      Crash on QFontEngineMulti::ascent()

      Unhandled exception at 0x00007FFFFE4C5D43 (Qt6Gui.dll) in minidump (41).dmp: 0xC0000005: Access violation reading location 0xFFFFFFFFFFFFFFFF.
      

      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:

      >	Qt6Gui.dll!QFontEngineMulti::ascent() Line 2156	C++
       	Qt6Gui.dll!QFontMetricsF::height() Line 1138	C++
       	Qt6Quick.dll!QQuickTextPrivate::lineHeightOffset() Line 1407	C++
       	Qt6Quick.dll!QQuickText::updatePaintNode(QSGNode * oldNode, QQuickItem::UpdatePaintNodeData * data) Line 2608	C++
       	Qt6Quick.dll!QQuickWindowPrivate::updateDirtyNode(QQuickItem * item) Line 2141	C++
       	Qt6Quick.dll!QQuickWindowPrivate::updateDirtyNodes() Line 1886	C++
       	Qt6Quick.dll!QQuickWindowPrivate::syncSceneGraph() Line 566	C++
       	Qt6Quick.dll!QSGRenderThread::sync(bool inExpose) Line 595	C++
       	Qt6Quick.dll!QSGRenderThread::syncAndRender() Line 734	C++
       	Qt6Quick.dll!QSGRenderThread::run() Line 984	C++
       	Qt6Core.dll!QThreadPrivate::start(void * arg) Line 328	C++
       	[External Code]	
      

      At the same time UI thread is waiting on a mutex in QSGThreadedRenderLoop::polishAndSync()

       	[External Code]	
      >	[Inline Frame] Qt6Core.dll!QWaitConditionPrivate::wait(QWaitConditionEvent *) Line 111	C++
       	Qt6Core.dll!QWaitCondition::wait(QMutex * mutex, unsigned long time) Line 169	C++
       	Qt6Core.dll!QWaitCondition::wait(QMutex * mutex, QDeadlineTimer deadline) Line 180	C++
       	Qt6Quick.dll!QSGThreadedRenderLoop::polishAndSync(QSGThreadedRenderLoop::Window * w, bool inExpose) Line 1550	C++
       	Qt6Quick.dll!QSGThreadedRenderLoop::handleUpdateRequest(QQuickWindow * window) Line 1363	C++
       	Qt6Quick.dll!QQuickWindow::event(QEvent * e) Line 1543	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++
       	Qt6Gui.dll!QPlatformWindow::deliverUpdateRequest() Line 811	C++
       	Qt6Gui.dll!QPlatformWindow::windowEvent(QEvent * event) Line 491	C++
       	Qt6Widgets.dll!QApplication::notify(QObject * receiver, QEvent * e) Line 2667	C++
       	Qt6Core.dll!QCoreApplication::notifyInternal2(QObject * receiver, QEvent * event) Line 1067	C++
       	Qt6Core.dll!QEventDispatcherWin32Private::sendTimerEvent(int timerId) Line 409	C++
       	Qt6Core.dll!QEventDispatcherWin32::event(QEvent * e) Line 891	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++
      

      At first glance it looks like a some race condition and probably has the same root cause as QTBUG-103267.

        Attachments

          Issue Links

          No reviews matched the request. Check your Options in the drop-down menu of this sections header.

            Activity

              People

              Assignee:
              esabraha Eskil Abrahamsen Blomfeldt
              Reporter:
              studiosus Vladimir Belyavsky
              Votes:
              2 Vote for this issue
              Watchers:
              4 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved:

                  Gerrit Reviews

                  There are no open Gerrit changes