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

QWaylandWindow::commit crashes if the buffer is null

    XMLWordPrintable

Details

    • Bug
    • Resolution: Incomplete
    • P1: Critical
    • None
    • 5.15.0
    • QPA: Wayland
    • None
    • Linux/Wayland

    Description

      When I unplug the monitor, a fake screen is created. If I create a window and refresh it at now, it occasionally crashes.
      The cause of the crash is that the buffer is null.
       
      The coredump information is as follows: 
      #0 0x0000007f8ed17520 in QtWaylandClient::QWaylandWindow::commit(QtWaylandClient::QWaylandBuffer*, QRegion const&) (this=0x7f80037150, buffer=0x0, damage=...)
      at /home/xll/Desktop/code/qtwayland-opensource-src/src/client/qwaylandwindow.cpp:597
      #1 0x0000007f8ed06da0 in QtWaylandClient::QWaylandShmBackingStore::flush(QWindow*, QRegion const&, QPoint const&) (this=<optimized out>, window=<optimized out>, region=..., offset=...)
      at /usr/include/aarch64-linux-gnu/qt5/QtCore/qmargins.h:114
      #2 0x0000007f95c51a6c in QBackingStore::flush(QRegion const&, QWindow*, QPoint const&) (this=this@entry=0xedd44a0, region=..., window=0xed34280, offset=...)
      at ../../include/QtGui/5.15.0/QtGui/private/../../../../../src/gui/kernel/qhighdpiscaling_p.h:203
      #3 0x0000007f9629d944 in QWidgetRepaintManager::flush(QWidget*, QRegion const&, QPlatformTextureList*) (widgetTextures=0x0, region=..., widget=0x7f800379d0, this=<optimized out>)
      at kernel/qwidgetrepaintmanager.cpp:1184
      #4 0x0000007f9629d944 in QWidgetRepaintManager::flush(QWidget*, QRegion const&, QPlatformTextureList*) (this=<optimized out>, widget=0x7f800379d0, region=..., widgetTextures=<optimized out>)
      at kernel/qwidgetrepaintmanager.cpp:1114
      #5 0x0000007f9629e58c in QWidgetRepaintManager::flush() (this=this@entry=0xf0d0040) at kernel/qwidgetrepaintmanager.cpp:1082
      #6 0x0000007f962a0800 in QWidgetRepaintManager::paintAndFlush() (this=this@entry=0xf0d0040) at kernel/qwidgetrepaintmanager.cpp:941
      #7 0x0000007f962a0d24 in QWidgetRepaintManager::sync(QWidget*, QRegion const&) (this=0xf0d0040, exposedWidget=0x7f800379d0, exposedRegion=...) at kernel/qwidgetrepaintmanager.cpp:743
      #8 0x0000007f962ca9bc in QWidgetPrivate::syncBackingStore(QRegion const&) (this=this@entry=0xecfe200, region=...)
      at ../../include/QtWidgets/5.15.0/QtWidgets/private/../../../../../src/widgets/kernel/qwidget_p.h:219
      #9 0x0000007f962eccc4 in QWidgetWindow::handleExposeEvent(QExposeEvent*) (this=this@entry=0xed34280, event=event@entry=0x7fe9257c30) at ../../include/QtGui/../../src/gui/kernel/qevent.h:479
      #10 0x0000007f962ed640 in QWidgetWindow::event(QEvent*) (event=0x7fe9257c30, this=0xed34280) at kernel/qwidgetwindow.cpp:342
      #11 0x0000007f962ed640 in QWidgetWindow::event(QEvent*) (this=0xed34280, event=0x7fe9257c30) at kernel/qwidgetwindow.cpp:238
      #12 0x0000007f962903fc in QApplicationPrivate::notify_helper(QObject*, QEvent*) (this=this@entry=0xecc4580, receiver=receiver@entry=0xed34280, e=e@entry=0x7fe9257c30) at kernel/qapplication.cpp:3671
      #13 0x0000007f96297474 in QApplication::notify(QObject*, QEvent*) (this=0x7fe92580c0, receiver=0xed34280, e=0x7fe9257c30) at kernel/qapplication.cpp:3417
      #14 0x0000007f9767f5f0 in Dtk::Widget::DApplication::notify(QObject*, QEvent*) () at /lib/aarch64-linux-gnu/libdtkwidget.so.5
      #15 0x0000007f96a4c084 in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0xed34280, event=0x7fe9257c30)
      at ../../include/QtCore/5.15.0/QtCore/private/../../../../../src/corelib/thread/qthread_p.h:325
      #16 0x0000007f96a4c2d4 in QCoreApplication::sendSpontaneousEvent(QObject*, QEvent*) (receiver=receiver@entry=0xed34280, event=event@entry=0x7fe9257c30) at kernel/qcoreapplication.cpp:1470
      #17 0x0000007f95a9b934 in QGuiApplicationPrivate::processExposeEvent(QWindowSystemInterfacePrivate::ExposeEvent*) (e=e@entry=0xed048b0) at kernel/qguiapplication.cpp:3193
      #18 0x0000007f95a9bbfc in QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) (e=e@entry=0xed048b0) at kernel/qguiapplication.cpp:2014
      #19 0x0000007f95a76974 in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) (flags=...) at kernel/qwindowsysteminterface.cpp:1175
      #20 0x0000007f8ed4f474 in userEventSourceDispatch(_GSource*, int (void*), void*) () at /lib/aarch64-linux-gnu/libQt5WaylandClient.so.5
      #21 0x0000007f96d55674 in g_main_context_dispatch () at /lib/aarch64-linux-gnu/libglib-2.0.so.0
      #22 0x0000007f96d558e8 in () at /lib/aarch64-linux-gnu/libglib-2.0.so.0
      #23 0x0000007f96d55984 in g_main_context_iteration () at /lib/aarch64-linux-gnu/libglib-2.0.so.0
      #24 0x0000007f96aa9ca4 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0xed27c00, flags=...) at kernel/qeventdispatcher_glib.cpp:423
      #25 0x0000007f96a4a7f4 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x7fe9257f80, flags=..., flags@entry=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:141
      #26 0x0000007f96a535d0 in QCoreApplication::exec() () at ../../include/QtCore/../../src/corelib/global/qflags.h:121
      #27 0x0000000000431098 in main ()

      Attachments

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

        Activity

          People

            xionglinlin xiong linlin
            xionglinlin xiong linlin
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes