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

Crash/Assert with WindowContainer and non-threaded rendering

    XMLWordPrintable

Details

    • Bug
    • Resolution: Unresolved
    • P1: Critical
    • None
    • 6.9
    • Quick: 2D Renderer
    • None
    • Linux/Wayland, Linux/X11

    Description

      A polish event in QtQuick can cause conditions to be re-evaluated, such as a WindowContainer making a window visible.

      When a window visibility changes it can trigger an immediate expose event, which in turn renders that subsurface window.

      QSGGuiThreadRenderLoop::renderWindow is not built to handle another window being added or rendered mid-way through being called rendering the outer window.

      We hit the following assert after we have finished rendering the subsurface and resume rendering the main outer window.

      qsgrenderloop.cpp:672 Q_ASSERT(data.rhi == cd->rhi);

      Full trace:

       0x00007ffff4ee8465 in QMessageLogger::fatal (this=this@entry=0x7fffffffcf28, msg=msg@entry=0x7ffff5208678 "ASSERT: \"%s\" in file %s, line %d") at /home/david/projects/kde6/src/qtbase/src/corelib/global/qlogging.cpp:901
      #8  0x00007ffff4ec6446 in qt_assert (assertion=assertion@entry=0x7ffff719cb2f "data.rhi == cd->rhi", file=file@entry=0x7ffff71aca30 "/home/david/projects/kde6/src/qtdeclarative/src/quick/scenegraph/qsgrenderloop.cpp", line=line@entry=672) at /home/david/projects/kde6/src/qtbase/src/corelib/global/qassert.cpp:106
      #9  0x00007ffff6f5ee90 in QSGGuiThreadRenderLoop::renderWindow (this=this@entry=0x555555b0c910, window=<optimized out>) at /home/david/projects/kde6/src/qtdeclarative/src/quick/scenegraph/qsgrenderloop.cpp:672
      #10 0x00007ffff6f5f4e6 in QSGGuiThreadRenderLoop::exposureChanged (this=0x555555b0c910, window=<optimized out>) at /home/david/projects/kde6/src/qtdeclarative/src/quick/scenegraph/qsgrenderloop.cpp:788
      #11 0x00007ffff6eba1be in QQuickWindow::exposeEvent (this=<optimized out>) at /home/david/projects/kde6/src/qtdeclarative/src/quick/items/qquickwindow.cpp:180
      #12 0x00007ffff5824729 in QWindow::event (this=this@entry=0x555555c28570, ev=ev@entry=0x7fffffffd5a0) at /home/david/projects/kde6/src/qtbase/src/gui/kernel/qwindow.cpp:2727
      #13 0x00007ffff6ec2762 in QQuickWindow::event (this=0x555555c28570, event=<optimized out>) at /home/david/projects/kde6/src/qtdeclarative/src/quick/items/qquickwindow.cpp:1653
      #14 0x00007ffff7788d02 in QApplicationPrivate::notify_helper (this=this@entry=0x555555596e60, receiver=receiver@entry=0x555555c28570, e=e@entry=0x7fffffffd5a0) at /home/david/projects/kde6/src/qtbase/src/widgets/kernel/qapplication.cpp:3309
      #15 0x00007ffff7790d58 in QApplication::notify (this=0x555555596d90, receiver=0x555555c28570, e=0x7fffffffd5a0) at /home/david/projects/kde6/src/qtbase/src/widgets/kernel/qapplication.cpp:3259
      #16 0x00007ffff4f5ce42 in QCoreApplication::notifyInternal2 (receiver=receiver@entry=0x555555c28570, event=event@entry=0x7fffffffd5a0) at /home/david/projects/kde6/src/qtbase/src/corelib/kernel/qcoreapplication.cpp:1111
      #17 0x00007ffff4f5cf4b in QCoreApplication::sendSpontaneousEvent (receiver=receiver@entry=0x555555c28570, event=event@entry=0x7fffffffd5a0) at /home/david/projects/kde6/src/qtbase/src/corelib/kernel/qcoreapplication.cpp:1565
      

      I've attached a QML file that triggers this.

      Attachments

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

        Activity

          People

            janichol Andy Nichols
            davidedmundson David Edmundson
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:

              Gerrit Reviews

                There are no open Gerrit changes