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

crash in wayland client due to null QWaylandShm

    XMLWordPrintable

Details

    • Bug
    • Resolution: Unresolved
    • P1: Critical
    • None
    • 5.15.18
    • QPA: Wayland
    • None

    Description

      I'm running qtwayland/examples/wayland/qwindow-compositor in an X11 session and testing it with a qml client:

      $ qml main.qml -platform wayland
      

      Stack trace:

      1  QtWayland::wl_shm::object                             qwayland-wayland.h          168 
      2  QtWaylandClient::QWaylandShmBuffer::QWaylandShmBuffer qwaylandshmbackingstore.cpp 113 
      3  QtWaylandClient::QWaylandShmBackingStore::getBuffer   qwaylandshmbackingstore.cpp 264 
      4  QtWaylandClient::QWaylandShmBackingStore::resize      qwaylandshmbackingstore.cpp 285 
      5  QtWaylandClient::QWaylandShmBackingStore::ensureSize  qwaylandshmbackingstore.cpp 206 
      6  QtWaylandClient::QWaylandShmBackingStore::beginPaint  qwaylandshmbackingstore.cpp 181 
      7  QBackingStore::beginPaint                             qbackingstore.cpp           138 
      8  QSGSoftwareRenderer::render                           qsgsoftwarerenderer.cpp     107 
      9  QSGRenderer::renderScene                              qsgrenderer.cpp             264 
      10 QSGSoftwareRenderer::renderScene                      qsgsoftwarerenderer.cpp     95  
      11 QSGSoftwareRenderContext::renderNextFrame             qsgsoftwarecontext.cpp      161 
      12 QQuickWindowPrivate::renderSceneGraph                 qquickwindow.cpp            609 
      13 QSGSoftwareRenderLoop::renderWindow                   qsgsoftwarerenderloop.cpp   175 
      14 QSGSoftwareRenderLoop::exposureChanged                qsgsoftwarerenderloop.cpp   227 
      15 QQuickWindow::exposeEvent                             qquickwindow.cpp            237 
      16 QWindow::event                                        qwindow.cpp                 2435
      17 QQuickWindow::event                                   qquickwindow.cpp            1905
      18 QCoreApplicationPrivate::notify_helper                qcoreapplication.cpp        1225
      19 doNotify                                              qcoreapplication.cpp        1154
      20 QCoreApplication::notify                              qcoreapplication.cpp        1140
      21 QGuiApplication::notify                               qguiapplication.cpp         1938
      22 QCoreApplication::notifyInternal2                     qcoreapplication.cpp        1064
      23 QCoreApplication::sendSpontaneousEvent                qcoreapplication.cpp        1474
      24 QGuiApplicationPrivate::processExposeEvent            qguiapplication.cpp         3261
      25 QGuiApplicationPrivate::processWindowSystemEvent      qguiapplication.cpp         2073
      26 QWindowSystemInterface::sendWindowSystemEvents        qwindowsysteminterface.cpp  1169
      27 userEventSourceDispatch                               qeventdispatcher_glib.cpp   74  
      28 ??                                                                                    
      29 ??                                                                                    
      30 g_main_context_iteration                                                              
      31 QEventDispatcherGlib::processEvents                   qeventdispatcher_glib.cpp   423 
      32 QPAEventDispatcherGlib::processEvents                 qeventdispatcher_glib.cpp   120 
      33 QEventLoop::processEvents                             qeventloop.cpp              142 
      34 QEventLoop::exec                                      qeventloop.cpp              235 
      35 QCoreApplication::exec                                qcoreapplication.cpp        1375
      36 main                                                  main.cpp                    651 
      

      After seeing it with 5.15 Arch Linux packages I tried again with a debug build on the 5.15 lts branch, and I can see in creator's debugger that shm is null here:

      QWaylandShmBuffer::QWaylandShmBuffer(QWaylandDisplay *display,
                           const QSize &size, QImage::Format format, int scale)
      {
      ...
          QWaylandShm* shm = display->shm();
          wl_shm_format wl_format = shm->formatFrom(format); 
          mImage = QImage(data, size.width(), size.height(), stride, format);
          mImage.setDevicePixelRatio(qreal(scale));
      
          mShmPool = wl_shm_create_pool(shm->object(), fd, alloc); // <---
          init(wl_shm_pool_create_buffer(mShmPool,0, size.width(), size.height(),
                                             stride, wl_format));
      }
      

      Attachments

        Issue Links

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

          Activity

            People

              qt.team.graphics.and.multimedia Qt Graphics Team
              srutledg Shawn Rutledge
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:

                Gerrit Reviews

                  There are no open Gerrit changes