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

Application freezes during drag'n'drop if server doesn't render optional drag icon

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Done
    • Icon: P1: Critical P1: Critical
    • 5.6.1
    • 5.6.0 RC
    • QPA: Wayland
    • 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 ()
      

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

            johanhelsing Johan Helsing
            mgraesslin Martin Gräßlin
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved:

                There are no open Gerrit changes