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

setCanResize() may cause deadlock in sync mode

    XMLWordPrintable

Details

    • Linux/Wayland

    Description

      This case is reported by our customer (Hyundai mobis)

      They are using qtwayland 5.13.2 and sync mode by invoking setSynchronousWindowSystemEvents(true);

      The backtrace is 

      (gdb) bt
      #0 0x0000007f86811620 in syscall () from /lib/libc.so.6
      #1 0x0000007f86b28bd8 in QBasicMutex::lockInternal() () from /usr/lib/libQt5Core.so.5
      #2 0x0000007f86b28c48 in QMutex::lock() () from /usr/lib/libQt5Core.so.5
      #3 0x0000007f8156b5f4 in QtWaylandClient::QWaylandWindow::setCanResize(bool) () from /usr/lib/libQt5WaylandClient.so.5
      #4 0x0000007f8000b4d4 in ?? () from /usr/lib/plugins/wayland-graphics-integration-client/libqt-plugin-wayland-egl.so
      #5 0x0000007f875d0cf0 in QOpenGLContext::swapBuffers(QSurface*) () from /usr/lib/libQt5Gui.so.5
      #6 0x0000007f85e9cfe4 in ?? () from /usr/lib/libQt5Quick.so.5
      #7 0x0000007f85e9d894 in ?? () from /usr/lib/libQt5Quick.so.5
      #8 0x0000007f875a050c in QWindow::event(QEvent*) () from /usr/lib/libQt5Gui.so.5
      #9 0x0000007f85f1379c in QQuickWindow::event(QEvent*) () from /usr/lib/libQt5Quick.so.5
      #10 0x0000007f86cfe72c in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib/libQt5Core.so.5
      #11 0x0000007f87596a08 in QGuiApplicationPrivate::processExposeEvent(QWindowSystemInterfacePrivate::ExposeEvent*) () from /usr/lib/libQt5Gui.so.5
      #12 0x0000007f87596ca8 in QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) () from /usr/lib/libQt5Gui.so.5
      #13 0x0000007f87575fec in bool QWindowSystemInterfacePrivate::handleWindowSystemEvent<QWindowSystemInterface::SynchronousDelivery>(QWindowSystemInterfacePrivate::WindowSystemEvent*) () from /usr/lib/libQt5Gui.so.5
      #14 0x0000007f8757c8ac in void QWindowSystemInterface::handleExposeEvent<QWindowSystemInterface::DefaultDelivery>(QWindow*, QRegion const&) () from /usr/lib/libQt5Gui.so.5
      #15 0x0000007f8156b12c in QtWaylandClient::QWaylandWindow::sendExposeEvent(QRect const&) () from /usr/lib/libQt5WaylandClient.so.5
      #16 0x0000007f8156b66c in QtWaylandClient::QWaylandWindow::setCanResize(bool) () from /usr/lib/libQt5WaylandClient.so.5
      #17 0x0000007f8000b4d4 in ?? () from /usr/lib/plugins/wayland-graphics-integration-client/libqt-plugin-wayland-egl.so
      #18 0x0000007f875d0cf0 in QOpenGLContext::swapBuffers(QSurface*) () from /usr/lib/libQt5Gui.so.5
      #19 0x0000007f85e9cfe4 in ?? () from /usr/lib/libQt5Quick.so.5
      #20 0x0000007f85f138e8 in QQuickWindow::event(QEvent*) () from /usr/lib/libQt5Quick.so.5
      #21 0x0000007f86cfe72c in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib/libQt5Core.so.5
      #22 0x0000007f87588d48 in QPlatformWindow::deliverUpdateRequest() () from /usr/lib/libQt5Gui.so.5
      #23 0x0000007f8156b888 in QtWaylandClient::QWaylandWindow::handleFrameCallback() () from /usr/lib/libQt5WaylandClient.so.5
      #24 0x0000007f84e45e0c in ffi_call_SYSV () from /usr/lib/libffi.so.6
      #25 0x0000007f84e4679c in ffi_call () from /usr/lib/libffi.so.6
      #26 0x0000007f814d6d84 in ?? () from /usr/lib/libwayland-client.so.0
      #27 0x0000007f814d3dd4 in ?? () from /usr/lib/libwayland-client.so.0
      #28 0x0000007f814d4ec0 in wl_display_dispatch_queue_pending () from /usr/lib/libwayland-client.so.0
      #29 0x0000007f81564b98 in QtWaylandClient::QWaylandDisplay::flushRequests() () from /usr/lib/libQt5WaylandClient.so.5
      #30 0x0000007f86d2dc90 in QMetaObject::activate(QObject*, int, int, void**) () from /usr/lib/libQt5Core.so.5
      #31 0x0000007f86d59ea4 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt5Core.so.5
      #32 0x0000007f86cfce0c in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt5Core.so.5
      #33 0x0000007f86d05ae8 in QCoreApplication::exec() () from /usr/lib/libQt5Core.so.5
      #34 0x0000000000406988 in ?? ()
      #35 0x0000007f8676a32c in __libc_start_main () from /lib/libc.so.6
      #36 0x0000000000407298 in ?? ()
      Backtrace stopped: not enough registers or memory available to unwind further 

      This happens when mWaitingToApplyConfigure is set by ivi_surface_configure().

      Attachments

        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
            hyunkook_khang Hyunkook Khang
            Votes:
            0 Vote for this issue
            Watchers:
            6 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes