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

Crash when setPersistentGraphics(false), setPersistentSceneGraph(false) and visible: true on wayland

    XMLWordPrintable

Details

    • Linux/Wayland
    • b93720472e (qt/qtbase/dev) b93720472e (qt/tqtc-qtbase/dev), 7382529fd (6.4), d4710f0cf (tqtc/lts-6.2)

    Description

      Crash when setPersistentGraphics(false), setPersistentSceneGraph(false) and visible: true on wayland.

       

      Please see the attached test sample. (https://bugreports.qt.io/secure/attachment/133068/decoration_crash.tar.gz)

      in main.cpp

          QQuickWindow *w = qobject_cast<QQuickWindow *>(engine.rootObjects()[0]);
          w->setPersistentGraphics(false);
          w->setPersistentSceneGraph(false); 

      there is timer in main.qml to set visible property of Window{}

          Timer {
              id: visibleTimer
              interval: 1000
              repeat: true
              running: true
              onTriggered: {
                  console.log("visibleTimer triggered, will be", !root.visible)
                  root.visible = !root.visible
                  console.log("---------------------------------------------------------------")
              }
          }
       

       

      and run with wayland

      ./simple -platform wayland 

       

      call stack

      (gdb) bt
      #0  0x00007f195545600c in QFontEngineFT::loadGlyphSet(QTransform const&) (this=0x7f19107e48c0, matrix=...) at /home/qt/work/qt/qtbase/src/gui/text/freetype/qfontengine_ft.cpp:1446
      #1  0x00007f195545ba87 in QFontEngineFT::loadGlyphFor(unsigned int, QFixedPoint const&, QFontEngine::GlyphFormat, QTransform const&, bool, bool)
          (this=0x7f19107e48c0, g=43, subPixelPosition=..., format=QFontEngine::Format_A8, t=..., fetchBoundingBox=fetchBoundingBox@entry=false, disableOutlineDrawing=false)
          at /home/qt/work/qt/qtbase/src/gui/text/freetype/qfontengine_ft.cpp:1926
      #2  0x00007f195545c11d in QFontEngineFT::glyphData(unsigned int, QFixedPoint const&, QFontEngine::GlyphFormat, QTransform const&)
          (this=<optimized out>, glyphIndex=<optimized out>, subPixelPosition=..., neededFormat=<optimized out>, t=...) at /home/qt/work/qt/qtbase/src/gui/text/freetype/qfontengine_ft.cpp:1906
      #3  0x00007f195512a873 in QRasterPaintEngine::drawCachedGlyphs(int, unsigned int const*, QFixedPoint const*, QFontEngine*) (this=
          0x7f19108298c0, numGlyphs=728007792, glyphs=<optimized out>, positions=<optimized out>, fontEngine=0x7f19107e48c0)
          at /home/qt/work/qt/qtbase/src/gui/painting/qpaintengine_raster.cpp:2802
      #4  0x00007f195512e9e0 in QRasterPaintEngine::drawStaticTextItem(QStaticTextItem*) (this=0x7f19108298c0, textItem=0x7f1910796208)
          at /home/qt/work/qt/qtbase/src/gui/painting/qpaintengine_raster.cpp:3059
      #5  0x00007f195514fe74 in QPainter::drawStaticText(QPointF const&, QStaticText const&) (this=this@entry=0x7f192b648808, topLeftPosition=..., staticText=...)
          at /home/qt/work/qt/qtbase/src/gui/painting/qpainter.cpp:5549
      #6  0x00007f193c0177db in QPainter::drawStaticText(QPoint const&, QStaticText const&) (staticText=..., p=<synthetic pointer>..., this=0x7f192b648808)
          at /home/qt/work/install/include/QtCore/qpoint.h:129
      #7  QtWaylandClient::QWaylandBradientDecoration::paint(QPaintDevice*) (this=0x7f192b6487e8, device=0x7f192b648810)
          at /home/qt/work/qt/qtwayland/src/plugins/decorations/bradient/main.cpp:165
      #8  0x00007f19504cbdb1 in QtWaylandClient::QWaylandAbstractDecoration::contentImage() (this=0x55bc796f0d10, this@entry=0x7f192b648a30)
          at /home/qt/work/qt/qtwayland/src/client/qwaylandabstractdecoration.cpp:95
      #9  0x00007f194cc2c595 in QtWaylandClient::DecorationsBlitter::blit(QtWaylandClient::QWaylandEglWindow*) (this=0x7f19107917c0, window=0x55bc7960b980)
          at /home/qt/work/qt/qtwayland/src/hardwareintegration/client/wayland-egl/qwaylandglcontext.cpp:168
      #10 0x00007f194cc2bf96 in QtWaylandClient::QWaylandGLContext::swapBuffers(QPlatformSurface*) (this=0x7f19101531d0, surface=<optimized out>)
          at /home/qt/work/qt/qtwayland/src/hardwareintegration/client/wayland-egl/qwaylandglcontext.cpp:351
      #11 0x00007f19553759ad in QRhiGles2::endFrame(QRhiSwapChain*, QFlags<QRhi::EndFrameFlag>) (this=0x7f191071d9c0, swapChain=0x7f1910784040, flags=...)
          at /home/qt/work/qt/qtbase/src/gui/rhi/qrhigles2.cpp:1912
      #12 0x00007f19552126d8 in QRhi::endFrame(QRhiSwapChain*, QFlags<QRhi::EndFrameFlag>) (this=0x7f191015fe90, swapChain=0x7f1910784040, flags=..., flags@entry=...)
          at /home/qt/work/qt/qtbase/src/gui/rhi/qrhi.cpp:7272
      #13 0x00007f1955c1fafa in QSGRenderThread::syncAndRender() (this=0x55bc796f0af0) at /home/qt/work/install/include/QtCore/qflags.h:73
      #14 0x00007f1955c20e07 in QSGRenderThread::run() (this=0x55bc796f0af0) at /home/qt/work/qt/qtdeclarative/src/quick/scenegraph/qsgthreadedrenderloop.cpp:934
      #15 0x00007f195452b4bf in QThreadPrivate::start(void*) (arg=0x55bc796f0af0) at /home/qt/work/qt/qtbase/src/corelib/thread/qthread_unix.cpp:322
      #16 0x00007f195390b609 in start_thread (arg=<optimized out>) at pthread_create.c:477
      #17 0x00007f1953f72133 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95 

      Attachments

        Activity

          People

            inho Inho Lee
            seokhako Seokha Ko
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: