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

Sporadic crash on QFontEngineMulti::ensureEngineAt()

    XMLWordPrintable

Details

    • Bug
    • Resolution: Fixed
    • P1: Critical
    • 6.2.13, 6.5.6, 6.7.1, 6.8.0 FF
    • 6.5.2, 6.5.3
    • GUI: Text handling
    • None
    • MacBook Pro 14" (M1 Pro, 2021) macOS 13.5.1
      MacBook Air 13" (M1, 2020) macOS 13.4.1
      iMac 24" (M1, Two Ports, 2021) macOS 13.5.2
      iMac 21.5" (4K, Mid-2017) macOS 13.4.1
      etc.
    • macOS
    • d914c58c7 (dev), 363878499 (6.7), 36c0a2ab9 (tqtc/lts-6.5), e6b73bae9 (tqtc/lts-6.2), 8476d702a (tqtc/lts-5.15)

    Description

      I just see such crashes on our crash reporting system. It 's never reproduced for us locally,
      so this might be platform specific (e.g. depends on fonts installed on certain user's machine).
      So, have no much details, sorry.

      Call stack:

      Exception Type:  SIGSEGV
      Exception Codes: SEGV_MAPERR at 0x20
      Crashed Thread:  0
      
      Thread 0 Crashed:
      0   QtGui                                0x00000001188721e5 QFontEngineMulti::ensureEngineAt(int) (qfontengine.cpp:1765)
      1   QtGui                                0x00000001188732e6 QFontEngineMulti::getGlyphBearings(unsigned int, double*, double*) (qfontengine.cpp:2008)
      2   QtGui                                0x00000001189069ec QTextLine::layout_helper(int) (qtextlayout.cpp:1734)
      3   QtQuick                              0x000000011714283c QQuickTextPrivate::setLineGeometry(QTextLine&, double, double&, bool) (qquicktext.cpp:1332)
      4   QtQuick                              0x000000011713fe3a QQuickTextPrivate::setupTextLayout(double*) (qquicktext.cpp:1004)
      5   QtQuick                              0x000000011713ba4d QQuickTextPrivate::updateSize() (qquicktext.cpp:390)
      6   QtQuick                              0x000000011713dce1 QQuickTextPrivate::updateLayout() (qquicktext.cpp:269)
      7   QtQuick                              0x00000001171438c4 QQuickText::setText(QString const&) (qquicktext.cpp:1871)
      8   QtQml                                0x0000000119b81ca7 GenericBinding<10>::write(QV4::Value const&, bool, QFlags<QQmlPropertyData::WriteFlag>) (qqmlpropertydata_p.h:339)
      9   QtQml                                0x0000000119b7f908 QQmlBinding::doUpdate(QQmlJavaScriptExpression::DeleteWatcher const&, QFlags<QQmlPropertyData::WriteFlag>, QV4::Scope&) (qqmlbinding.cpp:0)
      10  QtQml                                0x0000000119b7d7ab QQmlBinding::update(QFlags<QQmlPropertyData::WriteFlag>) (qqmlbinding.cpp:164)
      11  QtQml                                0x0000000119c0deca QQmlNotifier::emitNotify(QQmlNotifierEndpoint*, void**) (qqmlnotifier.cpp:70)
      12  QtCore                               0x000000011a6205b0 void doActivate<false>(QObject*, int, void**) (qobject.cpp:3884)
      13  QtQmlModels                          0x00000001157e3a94 VDMModelDelegateDataType::notify(QQmlAdaptorModel const&, QList<QQmlDelegateModelItem*> const&, int, int, QList<int> const&) const (qqmladaptormodel.cpp:139)
      14  QtQmlModels                          0x00000001157f14f7 QQmlDelegateModel::_q_itemsChanged(int, int, QList<int> const&) (qqmladaptormodel_p.h:127)
      15  QtQmlModels                          0x00000001157f4918 QQmlDelegateModel::_q_layoutChanged(QList<QPersistentModelIndex> const&, QAbstractItemModel::LayoutChangeHint) (qqmldelegatemodel.cpp:2007)
      16  QtQmlModels                          0x00000001157fe0cd QQmlDelegateModel::qt_metacall(QMetaObject::Call, int, void**) (moc_qqmldelegatemodel_p.cpp:612)
      17  QtCore                               0x000000011a62083e void doActivate<false>(QObject*, int, void**) (qobject.cpp:4018)
      18  QtCore                               0x000000011a7fa042 QAbstractItemModel::layoutChanged(QList<QPersistentModelIndex> const&, QAbstractItemModel::LayoutChangeHint) (moc_qabstractitemmodel.cpp:1331)
      19  QtCore                               0x000000011a825a3d QSortFilterProxyModelPrivate::_q_sourceDataChanged(QModelIndex const&, QModelIndex const&, QList<int> const&) (qsortfilterproxymodel.cpp:1492)
      20  QtCore                               0x000000011a620b2a void doActivate<false>(QObject*, int, void**) (qobject.cpp:4004)
      21  QtCore                               0x000000011a7f9f6c QAbstractItemModel::dataChanged(QModelIndex const&, QModelIndex const&, QList<int> const&) (moc_qabstractitemmodel.cpp:1317)
      ...
      

      Happens in qfontengine.cpp

      
      void QFontEngineMulti::ensureEngineAt(int at)
      {
          if (!m_fallbackFamiliesQueried && at > 0)
              ensureFallbackFamiliesQueried();
          Q_ASSERT(at < m_engines.size());
          if (!m_engines.at(at)) {
              QFontEngine *engine = loadEngine(at);
              if (!engine)
                  engine = new QFontEngineBox(fontDef.pixelSize);
              Q_ASSERT(engine && engine->type() != QFontEngine::Multi);
              engine->ref.ref();
              m_engines[at] = engine; <-- CRASHED HERE
          }
      }
      

      Attachments

        1. 54.patch
          2 kB
        2. 54-2.patch
          3 kB
        3. image-2023-10-11-21-06-36-265.png
          image-2023-10-11-21-06-36-265.png
          1.09 MB
        4. screenshot-1.png
          screenshot-1.png
          178 kB

        Issue Links

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

          Activity

            People

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

              Dates

                Created:
                Updated:
                Resolved: