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

Incorrect texture handling in multi-screen wayland compositor

    XMLWordPrintable

    Details

    • Platform/s:
      Linux/Other display system

      Description

      There is a floating issue when multi-screen wayland compositor is crashed with following stack trace:

       (gdb) where
      #0 0x0000007f9fbb7470 in QOpenGLTextureHelper::glActiveTexture (this=0x200000000, texture=33984)
       at /usr/src/debug/qtbase/5.12.9+gitAUTOINC+823ed71e22-r0/git/src/gui/opengl/qopengltexturehelper_p.h:559
      #1 QOpenGLTexturePrivate::bind (reset=QOpenGLTexture::DontResetTextureUnit, unit=0, this=0x7f48b51150)
       at /usr/src/debug/qtbase/5.12.9+gitAUTOINC+823ed71e22-r0/git/src/gui/opengl/qopengltexture.cpp:256
      #2 QOpenGLTexture::bind (this=<optimized out>, unit=unit@entry=0, reset=reset@entry=QOpenGLTexture::DontResetTextureUnit)
       at /usr/src/debug/qtbase/5.12.9+gitAUTOINC+823ed71e22-r0/git/src/gui/opengl/qopengltexture.cpp:2493
      #3 0x0000007f9d2250ec in QWaylandBufferMaterial::bind (this=this@entry=0x7f484caa30)
       at /usr/src/debug/qtwayland/5.12.9+gitAUTOINC+5ca98f0c3f-r0/git/src/compositor/compositor_api/qwaylandquickitem.cpp:231
      #4 0x0000007f9d225f08 in QWaylandBufferMaterialShader::updateState (this=0x7f488390b0, state=..., newEffect=0x7f484caa30, oldEffect=<optimized out>)
       at /usr/src/debug/qtwayland/5.12.9+gitAUTOINC+5ca98f0c3f-r0/git/src/compositor/compositor_api/qwaylandquickitem.cpp:155
      #5 0x0000007fa042b110 in QSGBatchRenderer::Renderer::renderMergedBatch (this=0x7f48013710, batch=0x7f483eaf10)
       at /usr/src/debug/qtdeclarative/5.12.9+gitAUTOINC+722caf22ad-r0/git/src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp:2306
      #6 0x0000007fa042bbac in QSGBatchRenderer::Renderer::renderBatches (this=this@entry=0x7f48013710)
       at /usr/src/debug/qtdeclarative/5.12.9+gitAUTOINC+722caf22ad-r0/git/src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp:2547
      #7 0x0000007fa0430660 in QSGBatchRenderer::Renderer::render (this=<optimized out>)
       at /usr/src/debug/qtdeclarative/5.12.9+gitAUTOINC+722caf22ad-r0/git/src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp:2735
      #8 0x0000007fa04231d4 in QSGRenderer::renderScene (this=0x7f48013710, bindable=...)
       at /usr/src/debug/qtdeclarative/5.12.9+gitAUTOINC+722caf22ad-r0/git/src/quick/scenegraph/coreapi/qsgrenderer.cpp:244
      #9 0x0000007fa04235bc in QSGRenderer::renderScene (this=<optimized out>, fboId=<optimized out>)
       at /usr/src/debug/qtdeclarative/5.12.9+gitAUTOINC+722caf22ad-r0/git/src/quick/scenegraph/coreapi/qsgrenderer.cpp:197
      #10 0x0000007fa045af98 in QSGDefaultRenderContext::renderNextFrame (this=0x71e5600, renderer=0x7f48013710, fboId=<optimized out>)
       at /usr/src/debug/qtdeclarative/5.12.9+gitAUTOINC+722caf22ad-r0/git/src/quick/scenegraph/qsgdefaultrendercontext.cpp:182
      #11 0x0000007fa04b3de8 in QQuickWindowPrivate::renderSceneGraph (this=this@entry=0x71f0c10, size=...)
       at /usr/src/debug/qtdeclarative/5.12.9+gitAUTOINC+722caf22ad-r0/git/src/quick/items/qquickwindow.cpp:563
      #12 0x0000007fa046634c in QSGRenderThread::syncAndRender (this=this@entry=0x86f93c0)
       at /usr/src/debug/qtdeclarative/5.12.9+gitAUTOINC+722caf22ad-r0/git/src/quick/scenegraph/qsgthreadedrenderloop.cpp:646
      #13 0x0000007fa04697e4 in QSGRenderThread::run (this=0x86f93c0) at /usr/src/debug/qtdeclarative/5.12.9+gitAUTOINC+722caf22ad-r0/git/src/quick/scenegraph/qsgthreadedrenderloop.cpp:730
      #14 0x0000007f9ee8f548 in QThreadPrivate::start (arg=0x86f93c0) at /usr/src/debug/qtbase/5.12.9+gitAUTOINC+823ed71e22-r0/git/src/corelib/thread/qthread_unix.cpp:361
      #15 0x0000007f9dc2ffb8 in start_thread (arg=0x7f9dc54000 <__pthread_keys+15728>) at /usr/src/debug/glibc/2.25-r0/git/nptl/pthread_create.c:458
      #16 0x0000007f9d9fa54c in thread_start () at ../sysdeps/unix/sysv/linux/aarch64/clone.S:84
      

      Right before the crash, Qt prints warnings below

      741832 2020/10/05 12:51:45.627131 4125.1231 157 VD HCEN DFLT 658 log warn verbose 1 [] QOpenGLTexturePrivate::destroy() called but texture context 0x71eb1c0 is not shared with current context 0x728e2e0. Texture has not been destroyed
      741833 2020/10/05 12:51:45.627131 4125.1234 158 VD HCEN DFLT 658 log warn verbose 1 [] QOpenGLTexturePrivate::destroy() called but texture context 0x71eb1c0 is not shared with current context 0x728e2e0. Texture has not been destroyed
      

      Perhaps problem duplicates QTBUG-87597 but proposed by Qt team patch doesn't work on our environment.

        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:
              alexander.zaikin Alexander Zaikin
              Votes:
              0 Vote for this issue
              Watchers:
              6 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved:

                  Gerrit Reviews

                  There are no open Gerrit changes