Details
-
Bug
-
Resolution: Unresolved
-
P1: Critical
-
None
-
6.9
-
None
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.