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

Infinite loop when unzooming QPlainTextEdit

    XMLWordPrintable

Details

    • Bug
    • Resolution: Unresolved
    • P2: Important
    • None
    • 5.15, 6.8
    • None
    • Qt 6.8 up-to-date as provided by Fedora 41
    • Linux/X11

    Description

      Hello,

      simple repro:

      #include <QApplication>
      #include <QPlainTextEdit>
      int main(int argc, char *argv[])
      {
          QApplication a(argc, argv);
          QPlainTextEdit w;
          w.setPlainText("hello");
          w.setTextInteractionFlags(Qt::TextInteractionFlag::TextBrowserInteraction);
          w.show();
          return a.exec();
      } 

       

      When I unzoom, things get entirely stuck. It happens here after 12 "unzoom" steps with my mouse wheel & Ctrl pressed.

      Here are some stacktraces it's looping on - my repro has stacktrace with Qt 5 as this is what QtC went with for building by default it seems but I see the same on 6.8:

       

                                                                                                  
      1  match(int, QFontDef const&, QString const&, QString const&, QtFontDesc *, QList<int> const&, unsigned int *)     (aarch64) /lib64/libQt5Gui.so.5                                                                                                     0xfffff7417e24 
      2  QFontDatabase::findFont(QFontDef const&, int, bool)                                                              (aarch64) /lib64/libQt5Gui.so.5                                                                                                     0xfffff741a8a4 
      3  QFontEngineMulti::loadEngine(int)                                                                                (aarch64) /lib64/libQt5Gui.so.5                                                                                                     0xfffff7400ae0 
      4  QFontEngineMulti::ensureEngineAt(int)                                                                            (aarch64) /lib64/libQt5Gui.so.5                                                                                                     0xfffff7401f5c 
      5  QFontEngineMulti::stringToCMap(QChar const *, int, QGlyphLayout *, int *, QFlags<QFontEngine::ShaperFlag>) const (aarch64) /lib64/libQt5Gui.so.5                                                                                                     0xfffff740246c 
      6  QTextEngine::shapeText(int) const                                                                                (aarch64) /lib64/libQt5Gui.so.5                                                                                                     0xfffff7422c04 
      7  QTextLine::layout_helper(int)                                                                                    (aarch64) /lib64/libQt5Gui.so.5                                                                                                     0xfffff7433e74 
      8  QPlainTextDocumentLayout::layoutBlock(QTextBlock const&)                                                         (aarch64) /lib64/libQt5Widgets.so.5                                                                                                 0xfffff7ba8660 
      9  QPlainTextDocumentLayout::documentChanged(int, int, int)                                                         (aarch64) /lib64/libQt5Widgets.so.5                                                                                                 0xfffff7ba8eb0 
      10 QWidget::event(QEvent *)                                                                                         (aarch64) /lib64/libQt5Widgets.so.5                                                                                                 0xfffff7a19884 
      11 QFrame::event(QEvent *)                                                                                          (aarch64) /lib64/libQt5Widgets.so.5                                                                                                 0xfffff7ac0770 
      12 QApplicationPrivate::notify_helper(QObject *, QEvent *)                                                          (aarch64) /lib64/libQt5Widgets.so.5                                                                                                 0xfffff79d3598 
      13 QCoreApplication::notifyInternal2(QObject *, QEvent *)                                                           (aarch64) /lib64/libQt5Core.so.5                                                                                                    0xfffff6efb0cc 
      14 QWidgetPrivate::updateFont(QFont const&)                                                                         (aarch64) /lib64/libQt5Widgets.so.5                                                                                                 0xfffff7a0a084 
      15 QWidget::setFont(QFont const&)                                                                                   (aarch64) /lib64/libQt5Widgets.so.5                                                                                                 0xfffff7a0c998 
      16 QPlainTextEdit::zoomInF(float)                                                                                   (aarch64) /lib64/libQt5Widgets.so.5                                                                                                 0xfffff7baab98 
      17 QWidget::event(QEvent *)                                                                                         (aarch64) /lib64/libQt5Widgets.so.5                                                                                                 0xfffff7a198b0 
      18 QFrame::event(QEvent *)                                                                                          (aarch64) /lib64/libQt5Widgets.so.5                                                                                                 0xfffff7ac0770 
      19 QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject *, QEvent *)                                      (aarch64) /lib64/libQt5Core.so.5                                                                                                    0xfffff6efadcc 
      20 QApplicationPrivate::notify_helper(QObject *, QEvent *)                                                          (aarch64) /lib64/libQt5Widgets.so.5                                                                                                 0xfffff79d3580 
      21 QApplication::notify(QObject *, QEvent *)                                                                        (aarch64) /lib64/libQt5Widgets.so.5                                                                                                 0xfffff79dc2f4 
      22 QCoreApplication::notifyInternal2(QObject *, QEvent *)                                                           (aarch64) /lib64/libQt5Core.so.5                                                                                                    0xfffff6efb0cc 
      23 QWidgetWindow::handleWheelEvent(QWheelEvent *)                                                                   (aarch64) /lib64/libQt5Widgets.so.5                                                                                                 0xfffff7a36878 
      24 QWidgetWindow::event(QEvent *)                                                                                   (aarch64) /lib64/libQt5Widgets.so.5                                                                                                 0xfffff7a38230 
      25 QApplicationPrivate::notify_helper(QObject *, QEvent *)                                                          (aarch64) /lib64/libQt5Widgets.so.5                                                                                                 0xfffff79d3598 
      26 QCoreApplication::notifyInternal2(QObject *, QEvent *)                                                           (aarch64) /lib64/libQt5Core.so.5                                                                                                    0xfffff6efb0cc 
      27 QGuiApplicationPrivate::processWheelEvent(QWindowSystemInterfacePrivate::WheelEvent *)                           (aarch64) /lib64/libQt5Gui.so.5                                                                                                     0xfffff734517c 
      28 QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>)                            (aarch64) /lib64/libQt5Gui.so.5                                                                                                     0xfffff73233d8 
      29 xcbSourceDispatch(_GSource *, int ( *)(void *), void *)                                                          (aarch64) /lib64/libQt5XcbQpa.so.5                                                                                                  0xfffff33290cc 
      30 g_main_context_dispatch_unlocked.lto_priv.0                                                                      (aarch64) /lib64/libglib-2.0.so.0                                                                                                   0xfffff5a3e1f4 
      31 g_main_context_iterate_unlocked.isra.0                                                                           (aarch64) /lib64/libglib-2.0.so.0                                                                                                   0xfffff5aa17b0 
      32 g_main_context_iteration                                                                                         (aarch64) /lib64/libglib-2.0.so.0                                                                                                   0xfffff5a3f8c4 
      33 QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>)                                       (aarch64) /lib64/libQt5Core.so.5                                                                                                    0xfffff6f5b1d8 
      34 QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>)                                                          (aarch64) /lib64/libQt5Core.so.5                                                                                                    0xfffff6ef9264 
      35 QCoreApplication::exec()                                                                                         (aarch64) /lib64/libQt5Core.so.5                                                                                                    0xfffff6f02b40 
      36 main                                                                                                             main.cpp                                                                                                                         11 0x402a64       
      37 __libc_start_call_main                                                                                           (aarch64) /lib64/libc.so.6                                                                                                          0xfffff672629c 
      38 __libc_start_main * *GLIBC_2.34                                                                                  (aarch64) /lib64/libc.so.6                                                                                                          0xfffff672637c 
      39 _start                                                                                                           (aarch64) /home/jcelerier/projets/bugreports/bug-plaintextedit-infinite-loop/build/Desktop-Debug/bug-plaintextedit-infinite-loop    0x402770       
       

       

                                                                                          
      1  FcPatternObjectPosition.lto_priv.0                                                                               (aarch64) /lib64/libfontconfig.so.1                                                                                                 0xfffff3269910 
      2  FcPatternObjectGetWithBinding.part.0                                                                             (aarch64) /lib64/libfontconfig.so.1                                                                                                 0xfffff3269e40 
      3  FcPatternGetString                                                                                               (aarch64) /lib64/libfontconfig.so.1                                                                                                 0xfffff326a95c 
      4  QFontconfigDatabase::setupFontEngine(QFontEngineFT *, QFontDef const&) const                                     (aarch64) /lib64/libQt5XcbQpa.so.5                                                                                                  0xfffff3375270 
      5  QFontconfigDatabase::fontEngine(QFontDef const&, void *)                                                         (aarch64) /lib64/libQt5XcbQpa.so.5                                                                                                  0xfffff3375bb8 
      6  loadEngine(int, QFontDef const&, QtFontFamily *, QtFontFoundry *, QtFontStyle *, QtFontSize *) (.isra.0)         (aarch64) /lib64/libQt5Gui.so.5                                                                                                     0xfffff7419cb8 
      7  QFontDatabase::findFont(QFontDef const&, int, bool)                                                              (aarch64) /lib64/libQt5Gui.so.5                                                                                                     0xfffff741a930 
      8  QFontEngineMulti::loadEngine(int)                                                                                (aarch64) /lib64/libQt5Gui.so.5                                                                                                     0xfffff7400ae0 
      9  QFontEngineMulti::ensureEngineAt(int)                                                                            (aarch64) /lib64/libQt5Gui.so.5                                                                                                     0xfffff7401f5c 
      10 QFontEngineMulti::stringToCMap(QChar const *, int, QGlyphLayout *, int *, QFlags<QFontEngine::ShaperFlag>) const (aarch64) /lib64/libQt5Gui.so.5                                                                                                     0xfffff740246c 
      11 QTextEngine::shapeText(int) const                                                                                (aarch64) /lib64/libQt5Gui.so.5                                                                                                     0xfffff7422c04 
      12 QTextLine::layout_helper(int)                                                                                    (aarch64) /lib64/libQt5Gui.so.5                                                                                                     0xfffff7433e74 
      13 QPlainTextDocumentLayout::layoutBlock(QTextBlock const&)                                                         (aarch64) /lib64/libQt5Widgets.so.5                                                                                                 0xfffff7ba8660 
      14 QPlainTextDocumentLayout::documentChanged(int, int, int)                                                         (aarch64) /lib64/libQt5Widgets.so.5                                                                                                 0xfffff7ba8eb0 
      15 QWidget::event(QEvent *)                                                                                         (aarch64) /lib64/libQt5Widgets.so.5                                                                                                 0xfffff7a19884 
      16 QFrame::event(QEvent *)                                                                                          (aarch64) /lib64/libQt5Widgets.so.5                                                                                                 0xfffff7ac0770 
      17 QApplicationPrivate::notify_helper(QObject *, QEvent *)                                                          (aarch64) /lib64/libQt5Widgets.so.5                                                                                                 0xfffff79d3598 
      18 QCoreApplication::notifyInternal2(QObject *, QEvent *)                                                           (aarch64) /lib64/libQt5Core.so.5                                                                                                    0xfffff6efb0cc 
      19 QWidgetPrivate::updateFont(QFont const&)                                                                         (aarch64) /lib64/libQt5Widgets.so.5                                                                                                 0xfffff7a0a084 
      20 QWidget::setFont(QFont const&)                                                                                   (aarch64) /lib64/libQt5Widgets.so.5                                                                                                 0xfffff7a0c998 
      21 QPlainTextEdit::zoomInF(float)                                                                                   (aarch64) /lib64/libQt5Widgets.so.5                                                                                                 0xfffff7baab98 
      22 QWidget::event(QEvent *)                                                                                         (aarch64) /lib64/libQt5Widgets.so.5                                                                                                 0xfffff7a198b0 
      23 QFrame::event(QEvent *)                                                                                          (aarch64) /lib64/libQt5Widgets.so.5                                                                                                 0xfffff7ac0770 
      24 QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject *, QEvent *)                                      (aarch64) /lib64/libQt5Core.so.5                                                                                                    0xfffff6efadcc 
      25 QApplicationPrivate::notify_helper(QObject *, QEvent *)                                                          (aarch64) /lib64/libQt5Widgets.so.5                                                                                                 0xfffff79d3580 
      26 QApplication::notify(QObject *, QEvent *)                                                                        (aarch64) /lib64/libQt5Widgets.so.5                                                                                                 0xfffff79dc2f4 
      27 QCoreApplication::notifyInternal2(QObject *, QEvent *)                                                           (aarch64) /lib64/libQt5Core.so.5                                                                                                    0xfffff6efb0cc 
      28 QWidgetWindow::handleWheelEvent(QWheelEvent *)                                                                   (aarch64) /lib64/libQt5Widgets.so.5                                                                                                 0xfffff7a36878 
      29 QWidgetWindow::event(QEvent *)                                                                                   (aarch64) /lib64/libQt5Widgets.so.5                                                                                                 0xfffff7a38230 
      30 QApplicationPrivate::notify_helper(QObject *, QEvent *)                                                          (aarch64) /lib64/libQt5Widgets.so.5                                                                                                 0xfffff79d3598 
      31 QCoreApplication::notifyInternal2(QObject *, QEvent *)                                                           (aarch64) /lib64/libQt5Core.so.5                                                                                                    0xfffff6efb0cc 
      32 QGuiApplicationPrivate::processWheelEvent(QWindowSystemInterfacePrivate::WheelEvent *)                           (aarch64) /lib64/libQt5Gui.so.5                                                                                                     0xfffff734517c 
      33 QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>)                            (aarch64) /lib64/libQt5Gui.so.5                                                                                                     0xfffff73233d8 
      34 xcbSourceDispatch(_GSource *, int ( *)(void *), void *)                                                          (aarch64) /lib64/libQt5XcbQpa.so.5                                                                                                  0xfffff33290cc 
      35 g_main_context_dispatch_unlocked.lto_priv.0                                                                      (aarch64) /lib64/libglib-2.0.so.0                                                                                                   0xfffff5a3e1f4 
      36 g_main_context_iterate_unlocked.isra.0                                                                           (aarch64) /lib64/libglib-2.0.so.0                                                                                                   0xfffff5aa17b0 
      37 g_main_context_iteration                                                                                         (aarch64) /lib64/libglib-2.0.so.0                                                                                                   0xfffff5a3f8c4 
      38 QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>)                                       (aarch64) /lib64/libQt5Core.so.5                                                                                                    0xfffff6f5b1d8 
      39 QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>)                                                          (aarch64) /lib64/libQt5Core.so.5                                                                                                    0xfffff6ef9264 
      40 QCoreApplication::exec()                                                                                         (aarch64) /lib64/libQt5Core.so.5                                                                                                    0xfffff6f02b40 
      41 main                                                                                                             main.cpp                                                                                                                         11 0x402a64       
      42 __libc_start_call_main                                                                                           (aarch64) /lib64/libc.so.6                                                                                                          0xfffff672629c 
      43 __libc_start_main * *GLIBC_2.34                                                                                  (aarch64) /lib64/libc.so.6                                                                                                          0xfffff672637c 
      44 _start                                                                                                           (aarch64) /home/jcelerier/projets/bugreports/bug-plaintextedit-infinite-loop/build/Desktop-Debug/bug-plaintextedit-infinite-loop    0x402770       
       

      Attachments

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

        Activity

          People

            qt.team.quick.subscriptions Qt Quick and Widgets Team
            jcelerier Jean-Michaël Celerier
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:

              Gerrit Reviews

                There are no open Gerrit changes