-
Bug
-
Resolution: Done
-
P1: Critical
-
5.6.0 RC
-
None
-
QtWayland on 5.6.0 branch with HEAD at baec8be7294a176620253dbbc1b2938cf96c8360
I observed that any Qt application freezes on Wayland if the server does not render the optional icon provided in the start_drag request on the data device.
Backtrace of a frozen application (KWrite):
(gdb) t a a bt Thread 2 (Thread 0x7fffe26f0700 (LWP 24310)): #0 0x00007ffff2645b6d in poll () at ../sysdeps/unix/syscall-template.S:81 #1 0x00007fffec7211cc in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0 #2 0x00007fffec7212dc in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0 #3 0x00007ffff346064f in QEventDispatcherGlib::processEvents (this=0x7fffdc0008c0, flags=...) at kernel/qeventdispatcher_glib.cpp:417 #4 0x00007ffff340c43a in QEventLoop::exec (this=this@entry=0x7fffe26efca0, flags=..., flags@entry=...) at kernel/qeventloop.cpp:204 #5 0x00007ffff32467bc in QThread::exec (this=this@entry=0x7ffff36dce20 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder>) at thread/qthread.cpp:503 #6 0x00007ffff366e245 in QDBusConnectionManager::run (this=0x7ffff36dce20 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder>) at qdbusconnection.cpp:181 #7 0x00007ffff324b369 in QThreadPrivate::start (arg=0x7ffff36dce20 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder>) at thread/qthread_unix.cpp:340 #8 0x00007ffff0036284 in start_thread (arg=0x7fffe26f0700) at pthread_create.c:333 #9 0x00007ffff264ea4d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109 Thread 1 (Thread 0x7fffe8722900 (LWP 24301)): #0 syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38 #1 0x00007ffff3243830 in _q_futex (op=0, val=3, timeout=0x0, addr=0x7fffe7668020 <QtWaylandClient::QWaylandWindow::mFrameSyncMutex>) at thread/qmutex_linux.cpp:146 #2 lockInternal_helper<false> (timeout=-1, elapsedTimer=0x0, d_ptr=...) at thread/qmutex_linux.cpp:187 #3 QBasicMutex::lockInternal (this=0x7fffe7668020 <QtWaylandClient::QWaylandWindow::mFrameSyncMutex>) at thread/qmutex_linux.cpp:203 #4 0x00007ffff32438d6 in QMutex::lock (this=this@entry=0x7fffe7668020 <QtWaylandClient::QWaylandWindow::mFrameSyncMutex>) at thread/qmutex.cpp:224 #5 0x00007fffe75f5658 in QMutexLocker::QMutexLocker (m=0x7fffe7668020 <QtWaylandClient::QWaylandWindow::mFrameSyncMutex>, this=<synthetic pointer>) at /home/martin/src/qt5/qtbase/include/QtCore/../../src/corelib/thread/qmutex.h:128 #6 QtWaylandClient::QWaylandWindow::waitForFrameSync (this=this@entry=0x83a6d0) at qwaylandwindow.cpp:467 #7 0x00007fffe75e9aaf in QtWaylandClient::QWaylandShmBackingStore::beginPaint (this=this@entry=0x877a00) at qwaylandshmbackingstore.cpp:178 #8 0x00007ffff3961475 in QBackingStore::beginPaint (this=0x1064630, region=...) at painting/qbackingstore.cpp:167 #9 0x00007ffff37cf942 in QShapedPixmapWindow::render (this=0x108fab0) at kernel/qshapedpixmapdndwindow.cpp:69 #10 0x00007ffff37e665b in QWindow::event (this=0x108fab0, ev=<optimized out>) at kernel/qwindow.cpp:2096 #11 0x00007ffff3df1c3c in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x108fab0, e=0x7fffffffb150) at kernel/qapplication.cpp:3714 #12 0x00007ffff3df6af6 in QApplication::notify (this=0x7fffffffcde0, receiver=0x108fab0, e=0x7fffffffb150) at kernel/qapplication.cpp:3495 #13 0x00007ffff340e138 in QCoreApplication::notifyInternal2 (receiver=receiver@entry=0x108fab0, event=event@entry=0x7fffffffb150) at kernel/qcoreapplication.cpp:1015 #14 0x00007ffff37dceb7 in QCoreApplication::sendSpontaneousEvent (event=0x7fffffffb150, receiver=0x108fab0) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:230 #15 QGuiApplicationPrivate::processExposeEvent (e=0xc95190) at kernel/qguiapplication.cpp:2732 #16 0x00007ffff37dd9bd in QGuiApplicationPrivate::processWindowSystemEvent (e=e@entry=0xc95190) at kernel/qguiapplication.cpp:1714 #17 0x00007ffff37bc38b in QWindowSystemInterface::sendWindowSystemEvents (flags=..., flags@entry=...) at kernel/qwindowsysteminterface.cpp:645 #18 0x00007ffff37bd4c8 in QWindowSystemInterface::flushWindowSystemEvents (flags=flags@entry=...) at kernel/qwindowsysteminterface.cpp:623 #19 0x00007fffe75f5967 in QtWaylandClient::QWaylandWindow::setVisible (this=0x83a6d0, visible=<optimized out>) at qwaylandwindow.cpp:294 #20 0x00007ffff37e5192 in QWindow::setVisible (this=0x108fab0, visible=visible@entry=false) at kernel/qwindow.cpp:523 #21 0x00007ffff37cff0d in QBasicDrag::cancel (this=this@entry=0x6622f0) at kernel/qsimpledrag.cpp:240 #22 0x00007fffe75f98d9 in QtWaylandClient::QWaylandDrag::cancel (this=0x6622f0) at qwaylanddnd.cpp:75 #23 0x00007ffff37d03eb in QBasicDrag::eventFilter (this=0x6622f0, o=0x108fab0, e=0x7fffffffb3d0) at kernel/qsimpledrag.cpp:140 #24 0x00007fffe75f996f in QtWaylandClient::QWaylandDrag::finishDrag (this=0x6622f0, response=...) at qwaylanddnd.cpp:123 #25 0x00007fffe7603c6b in QtWaylandClient::QWaylandDataDevice::data_device_drop (this=0x662c60) at qwaylanddatadevice.cpp:148 #26 0x00007fffe6947060 in ffi_call_unix64 () from /usr/lib/x86_64-linux-gnu/libffi.so.6 ---Type <return> to continue, or q <return> to quit--- #27 0x00007fffe6946acb in ffi_call () from /usr/lib/x86_64-linux-gnu/libffi.so.6 #28 0x00007fffe717a5e8 in wl_closure_invoke (closure=<optimized out>, flags=<optimized out>, target=0x6619f0, opcode=4, data=0x662c70) at ../src/connection.c:945 #29 0x00007fffe71778f0 in dispatch_event (display=display@entry=0x65d390, queue=0x65d450) at ../src/wayland-client.c:1173 #30 0x00007fffe717796c in dispatch_queue (display=display@entry=0x65d390, queue=queue@entry=0x65d450) at ../src/wayland-client.c:1348 #31 0x00007fffe717863f in wl_display_dispatch_queue (display=0x65d390, queue=0x65d450) at ../src/wayland-client.c:1587 #32 0x00007fffe71786fc in wl_display_dispatch (display=<optimized out>) at ../src/wayland-client.c:1657 #33 0x00007fffe75f2bfd in QtWaylandClient::QWaylandDisplay::blockingReadEvents (this=0x65d210) at qwaylanddisplay.cpp:202 #34 0x00007fffe75f5681 in QtWaylandClient::QWaylandWindow::waitForFrameSync (this=this@entry=0x83a6d0) at qwaylandwindow.cpp:472 #35 0x00007fffe75e9aaf in QtWaylandClient::QWaylandShmBackingStore::beginPaint (this=this@entry=0x877a00) at qwaylandshmbackingstore.cpp:178 #36 0x00007ffff3961475 in QBackingStore::beginPaint (this=0x1064630, region=...) at painting/qbackingstore.cpp:167 #37 0x00007ffff37cf942 in QShapedPixmapWindow::render (this=0x108fab0) at kernel/qshapedpixmapdndwindow.cpp:69 #38 0x00007ffff37e665b in QWindow::event (this=0x108fab0, ev=<optimized out>) at kernel/qwindow.cpp:2096 #39 0x00007ffff3df1c3c in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x108fab0, e=0x7fffffffbc70) at kernel/qapplication.cpp:3714 #40 0x00007ffff3df6af6 in QApplication::notify (this=0x7fffffffcde0, receiver=0x108fab0, e=0x7fffffffbc70) at kernel/qapplication.cpp:3495 #41 0x00007ffff340e138 in QCoreApplication::notifyInternal2 (receiver=receiver@entry=0x108fab0, event=event@entry=0x7fffffffbc70) at kernel/qcoreapplication.cpp:1015 #42 0x00007ffff37dceb7 in QCoreApplication::sendSpontaneousEvent (event=0x7fffffffbc70, receiver=0x108fab0) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:230 #43 QGuiApplicationPrivate::processExposeEvent (e=0xe3aa60) at kernel/qguiapplication.cpp:2732 #44 0x00007ffff37dd9bd in QGuiApplicationPrivate::processWindowSystemEvent (e=e@entry=0xe3aa60) at kernel/qguiapplication.cpp:1714 #45 0x00007ffff37bc38b in QWindowSystemInterface::sendWindowSystemEvents (flags=...) at kernel/qwindowsysteminterface.cpp:645 #46 0x00007fffe760bc00 in userEventSourceDispatch (source=<optimized out>) at eventdispatchers/qeventdispatcher_glib.cpp:70 #47 0x00007fffec720fd7 in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0 #48 0x00007fffec721230 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0 #49 0x00007fffec7212dc in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0 #50 0x00007ffff346064f in QEventDispatcherGlib::processEvents (this=0x6d2030, flags=...) at kernel/qeventdispatcher_glib.cpp:417 #51 0x00007ffff340c43a in QEventLoop::exec (this=this@entry=0x10760f0, flags=..., flags@entry=...) at kernel/qeventloop.cpp:204 #52 0x00007ffff37d0bf2 in QBasicDrag::drag (this=0x6622f0, o=<optimized out>) at kernel/qsimpledrag.cpp:186 #53 0x00007ffff37eb0d1 in QDragManager::drag (this=0x1039640, o=o@entry=0x83a3a0) at kernel/qdnd.cpp:135 #54 0x00007ffff37e9bca in QDrag::start (this=0x83a3a0, request=...) at kernel/qdrag.cpp:303 #55 0x00007ffff783a37f in KateViewInternal::doDrag (this=0xcdba30) at /home/martin/src/kf5/frameworks/ktexteditor/src/view/kateviewinternal.cpp:3150 #56 0x00007ffff78389dd in KateViewInternal::mouseMoveEvent (this=0xcdba30, e=0x7fffffffc500) at /home/martin/src/kf5/frameworks/ktexteditor/src/view/kateviewinternal.cpp:2811 #57 0x00007ffff3e33218 in QWidget::event (this=0xcdba30, event=0x7fffffffc500) at kernel/qwidget.cpp:9109 #58 0x00007ffff3df1c3c in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0xcdba30, e=0x7fffffffc500) at kernel/qapplication.cpp:3714 #59 0x00007ffff3df7681 in QApplication::notify (this=<optimized out>, receiver=0xcdba30, e=0x7fffffffc500) at kernel/qapplication.cpp:3272 #60 0x00007ffff340e138 in QCoreApplication::notifyInternal2 (receiver=receiver@entry=0xcdba30, event=event@entry=0x7fffffffc500) at kernel/qcoreapplication.cpp:1015 #61 0x00007ffff3df60d5 in QCoreApplication::sendEvent (event=<optimized out>, receiver=<optimized out>) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:227 #62 QApplicationPrivate::sendMouseEvent (receiver=receiver@entry=0xcdba30, event=event@entry=0x7fffffffc500, alienWidget=alienWidget@entry=0xcdba30, nativeWidget=0x73a500, buttonDown=buttonDown@entry=0x7ffff42ce880 <qt_button_down>, lastMouseReceiver=..., spontaneous=true) at kernel/qapplication.cpp:2769 #63 0x00007ffff3e4c741 in QWidgetWindow::handleMouseEvent (this=this@entry=0xebca40, event=event@entry=0x7fffffffc900) at kernel/qwidgetwindow.cpp:554 #64 0x00007ffff3e4eabb in QWidgetWindow::event (this=0xebca40, event=0x7fffffffc900) at kernel/qwidgetwindow.cpp:210 #65 0x00007ffff3df1c3c in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0xebca40, e=0x7fffffffc900) at kernel/qapplication.cpp:3714 #66 0x00007ffff3df6af6 in QApplication::notify (this=0x7fffffffcde0, receiver=0xebca40, e=0x7fffffffc900) at kernel/qapplication.cpp:3495 ---Type <return> to continue, or q <return> to quit--- #67 0x00007ffff340e138 in QCoreApplication::notifyInternal2 (receiver=receiver@entry=0xebca40, event=event@entry=0x7fffffffc900) at kernel/qcoreapplication.cpp:1015 #68 0x00007ffff37dbf00 in QCoreApplication::sendSpontaneousEvent (event=0x7fffffffc900, receiver=0xebca40) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:230 #69 QGuiApplicationPrivate::processMouseEvent (e=0xc9bbc0) at kernel/qguiapplication.cpp:1868 #70 0x00007ffff37dd945 in QGuiApplicationPrivate::processWindowSystemEvent (e=e@entry=0xc9bbc0) at kernel/qguiapplication.cpp:1652 #71 0x00007ffff37bc38b in QWindowSystemInterface::sendWindowSystemEvents (flags=...) at kernel/qwindowsysteminterface.cpp:645 #72 0x00007fffe760bc00 in userEventSourceDispatch (source=<optimized out>) at eventdispatchers/qeventdispatcher_glib.cpp:70 #73 0x00007fffec720fd7 in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0 #74 0x00007fffec721230 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0 #75 0x00007fffec7212dc in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0 #76 0x00007ffff346064f in QEventDispatcherGlib::processEvents (this=0x6d2030, flags=...) at kernel/qeventdispatcher_glib.cpp:417 #77 0x00007ffff340c43a in QEventLoop::exec (this=this@entry=0x7fffffffcc80, flags=..., flags@entry=...) at kernel/qeventloop.cpp:204 #78 0x00007ffff34144ed in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1285 #79 0x0000000000416048 in main ()