Details
-
Bug
-
Resolution: Done
-
P1: Critical
-
5.15.1
-
None
-
-
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
Issue Links
- resulted in
-
QTBUG-96847 Race condition when rapidly showing and hiding widgets during drag
- Reported
-
QTBUG-96464 Wayland client race condition in applyConfigure
- Closed