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

Wayland client crash when QDrag is used

    XMLWordPrintable

Details

    • Linux/Wayland
    • c64c5d3849b40617e1de0295f8690f354cab2b3a (qt/qtwayland/dev) 6a8575b6aa4a200433c2993a7ac55f3d97c45eff (qt/qtwayland/6.2) a9cadc1dcfb282bec1a3ca01f2f4d93b9999e4f3 (qt/tqtc-qtwayland/5.15)
    • Wayland Project - Backlog task

    Description

      See attached test case.

      If during a drag, some windows are shown or hidden, then there's the following crash:

      #0  0x00007ffff7fb2a70 in wl_proxy_get_listener () from /usr/lib/libwayland-client.so.0
      #1  0x00007ffff390ca2a in QtWayland::wl_surface::fromObject(wl_surface*) () from /usr/lib/libQt5WaylandClient.so.5
      #2  0x00007ffff38f49aa in ?? () from /usr/lib/libQt5WaylandClient.so.5
      #3  0x00007ffff38ed9da in QtWaylandClient::QWaylandWindow::fromWlSurface(wl_surface*) () from /usr/lib/libQt5WaylandClient.so.5
      #4  0x00007ffff3904586 in ?? () from /usr/lib/libQt5WaylandClient.so.5
      #5  0x00007ffff7fa6a8d in ?? () from /usr/lib/libffi.so.7
      #6  0x00007ffff7fa601b in ?? () from /usr/lib/libffi.so.7
      #7  0x00007ffff7fb5e92 in ?? () from /usr/lib/libwayland-client.so.0
      #8  0x00007ffff7fb26c1 in ?? () from /usr/lib/libwayland-client.so.0
      #9  0x00007ffff7fb3ccc in wl_display_dispatch_queue_pending () from /usr/lib/libwayland-client.so.0
      #10 0x00007ffff38e9484 in QtWaylandClient::QWaylandDisplay::flushRequests() () from /usr/lib/libQt5WaylandClient.so.5
      #11 0x00007ffff6fa3070 in ?? () from /usr/lib/libQt5Core.so.5
      #12 0x00007ffff6fa65a0 in QSocketNotifier::activated(QSocketDescriptor, QSocketNotifier::Type, QSocketNotifier::QPrivateSignal) () from /usr/lib/libQt5Core.so.5
      #13 0x00007ffff6fa6dad in QSocketNotifier::event(QEvent*) () from /usr/lib/libQt5Core.so.5
      #14 0x00007ffff7a31752 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQt5Widgets.so.5
      #15 0x00007ffff6f6bcda in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib/libQt5Core.so.5
      #16 0x00007ffff6fc1c34 in QEventDispatcherUNIXPrivate::activateSocketNotifiers() () from /usr/lib/libQt5Core.so.5
      #17 0x00007ffff6fc20b5 in QEventDispatcherUNIX::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt5Core.so.5
      #18 0x00007ffff391c5ae in ?? () from /usr/lib/libQt5WaylandClient.so.5
      #19 0x00007ffff6f6a65c in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt5Core.so.5
      #20 0x00007ffff7384c36 in QBasicDrag::drag(QDrag*) () from /usr/lib/libQt5Gui.so.5
      #21 0x00007ffff7381e48 in QDragManager::drag(QDrag*) () from /usr/lib/libQt5Gui.so.5
      #22 0x00007ffff738216e in QDrag::exec(QFlags<Qt::DropAction>, Qt::DropAction) () from /usr/lib/libQt5Gui.so.5
      #23 0x000055555555739a in operator() (__closure=0x555555646f00) at main.cpp:37
      #24 0x0000555555557889 in QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, main(int, char**)::<lambda()> >::call(struct {...} &, void **) (f=..., arg=0x7fffffffc780) at /usr/include/qt/QtCore/qobjectdefs_impl.h:146
      #25 0x000055555555785b in QtPrivate::Functor<main(int, char**)::<lambda()>, 0>::call<QtPrivate::List<>, void>(struct {...} &, void *, void **) (f=..., arg=0x7fffffffc780) at /usr/include/qt/QtCore/qobjectdefs_impl.h:256
      #26 0x000055555555782a in QtPrivate::QFunctorSlotObject<main(int, char**)::<lambda()>, 0, QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase *, QObject *, void **, bool *) (which=1, this_=0x555555646ef0, r=0x7fffffffd270, a=0x7fffffffc780, ret=0x0) at /usr/include/qt/QtCore/qobjectdefs_impl.h:443
      #27 0x00007ffff6fa3036 in ?? () from /usr/lib/libQt5Core.so.5
      --Type <RET> for more, q to quit, c to continue without paging--
      #28 0x00007ffff7b235bf in ?? () from /usr/lib/libQt5Widgets.so.5
      #29 0x00007ffff7b238a8 in QAbstractButton::mousePressEvent(QMouseEvent*) () from /usr/lib/libQt5Widgets.so.5
      #30 0x00007ffff7a72b0e in QWidget::event(QEvent*) () from /usr/lib/libQt5Widgets.so.5
      #31 0x00007ffff7a31752 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQt5Widgets.so.5
      #32 0x00007ffff7a3887b in QApplication::notify(QObject*, QEvent*) () from /usr/lib/libQt5Widgets.so.5
      #33 0x00007ffff6f6bcda in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib/libQt5Core.so.5
      #34 0x00007ffff7a3787e in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool, bool) () from /usr/lib/libQt5Widgets.so.5
      #35 0x00007ffff7a8b249 in ?? () from /usr/lib/libQt5Widgets.so.5
      #36 0x00007ffff7a8e63f in ?? () from /usr/lib/libQt5Widgets.so.5
      #37 0x00007ffff7a31752 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQt5Widgets.so.5
      #38 0x00007ffff6f6bcda in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib/libQt5Core.so.5
      #39 0x00007ffff73444ac in QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) () from /usr/lib/libQt5Gui.so.5
      #40 0x00007ffff7319bac in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt5Gui.so.5
      #41 0x00007ffff391c5b8 in ?? () from /usr/lib/libQt5WaylandClient.so.5
      #42 0x00007ffff6f6a65c in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt5Core.so.5
      #43 0x00007ffff6f72af4 in QCoreApplication::exec() () from /usr/lib/libQt5Core.so.5
      #44 0x000055555555754e in main (a=1, b=0x7fffffffd428) at main.cpp:44
      
      

      Run the test-case, press the button and don't release it, move mouse over the 2 windows until it crashes. Also move mouse over the new windows that are created.
      If you can't repro, try Weston, or kwin_wayland

      Attachments

        1. main.cpp
          0.8 kB
        2. testc.pro
          0.7 kB

        Issue Links

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

          Activity

            People

              tvete Paul Olav Tvete
              iamsergio Sergio Martins
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Gerrit Reviews

                  There are no open Gerrit changes