Bug 472313 - Spectacle Crashes When Dragging Captured Image Into Google Chat in Firefox
Summary: Spectacle Crashes When Dragging Captured Image Into Google Chat in Firefox
Status: RESOLVED DUPLICATE of bug 470925
Alias: None
Product: Spectacle
Classification: Applications
Component: General (show other bugs)
Version: 23.04.2
Platform: Gentoo Packages Linux
: NOR crash
Target Milestone: ---
Assignee: Noah Davis
URL:
Keywords: drkonqi, wayland
Depends on:
Blocks:
 
Reported: 2023-07-17 05:05 UTC by mark
Modified: 2023-08-09 18:04 UTC (History)
4 users (show)

See Also:
Latest Commit:
Version Fixed In:
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description mark 2023-07-17 05:05:12 UTC
Application: spectacle (23.04.2)
 (Compiled from sources)
Qt Version: 5.15.10
Frameworks Version: 5.106.0
Operating System: Linux 6.1.38-gentoo--ZKsuOw-- x86_64
Windowing System: Wayland
Distribution: "Gentoo Linux"
DrKonqi: 5.27.5 [KCrashBackend]

-- Information about the crash:
1. Capture a rectangular region.
2. Drag the captured image from Spectacle's window into a Google chat conversation running in Firefox to upload and share it.
3. Crash.

(Crashed 3/3 times tested)

The crash can be reproduced every time.

-- Backtrace:
Application: Spectacle (spectacle), signal: Segmentation fault
Content of s_kcrashErrorMessage: std::unique_ptr<char []> = {get() = 0x0}
[KCrash Handler]
#6  0x00007f6735f65086 in QDrag::dragCursor(Qt::DropAction) const (this=0x0, action=action@entry=Qt::CopyAction) at /usr/src/debug/dev-qt/qtgui-5.15.10/qtbase-everywhere-src-5.15.10/src/gui/kernel/qdrag.cpp:345
#7  0x00007f6735f678d9 in QBasicDrag::updateCursor(Qt::DropAction) (this=this@entry=0x5623d4a00340, action=Qt::CopyAction) at /usr/src/debug/dev-qt/qtgui-5.15.10/qtbase-everywhere-src-5.15.10/src/gui/kernel/qsimpledrag.cpp:307
#8  0x00007f67379633b5 in QtWaylandClient::QWaylandDrag::setResponse(QPlatformDropQtResponse const&) (this=this@entry=0x5623d4a00340, response=...) at /usr/src/debug/dev-qt/qtwayland-5.15.10/qtwayland-everywhere-src-5.15.10/src/client/qwaylanddnd.cpp:123
#9  0x00007f673795f7bc in operator() (action=Qt::CopyAction, accepted=<optimized out>, __closure=<optimized out>) at /usr/src/debug/dev-qt/qtwayland-5.15.10/qtwayland-everywhere-src-5.15.10/src/client/qwaylanddatadevice.cpp:140
#10 QtPrivate::FunctorCall<QtPrivate::IndexesList<0, 1>, QtPrivate::List<bool, Qt::DropAction>, void, QtWaylandClient::QWaylandDataDevice::startDrag(QMimeData*, Qt::DropActions, QtWaylandClient::QWaylandWindow*)::<lambda(bool, Qt::DropAction)> >::call (arg=<optimized out>, f=<optimized out>) at /usr/include/qt5/QtCore/qobjectdefs_impl.h:146
#11 QtPrivate::Functor<QtWaylandClient::QWaylandDataDevice::startDrag(QMimeData*, Qt::DropActions, QtWaylandClient::QWaylandWindow*)::<lambda(bool, Qt::DropAction)>, 2>::call<QtPrivate::List<bool, Qt::DropAction>, void> (arg=<optimized out>, f=<optimized out>) at /usr/include/qt5/QtCore/qobjectdefs_impl.h:256
#12 QtPrivate::QFunctorSlotObject<QtWaylandClient::QWaylandDataDevice::startDrag(QMimeData*, Qt::DropActions, QtWaylandClient::QWaylandWindow*)::<lambda(bool, Qt::DropAction)>, 2, QtPrivate::List<bool, Qt::DropAction>, void>::impl(int, QtPrivate::QSlotObjectBase *, QObject *, void **, bool *) (which=<optimized out>, this_=<optimized out>, r=<optimized out>, a=<optimized out>, ret=<optimized out>) at /usr/include/qt5/QtCore/qobjectdefs_impl.h:443
#13 0x00007f6735ab76c4 in QtPrivate::QSlotObjectBase::call(QObject*, void**) (a=0x7ffe044c98b0, r=0x5623d4a0f6b0, this=0x5623d59f4c10) at /usr/src/debug/dev-qt/qtcore-5.15.10/qtbase-everywhere-src-5.15.10/include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:398
#14 doActivate<false>(QObject*, int, void**) (sender=0x5623d50c8b90, signal_index=5, argv=0x7ffe044c98b0) at /usr/src/debug/dev-qt/qtcore-5.15.10/qtbase-everywhere-src-5.15.10/src/corelib/kernel/qobject.cpp:3925
#15 0x00007f6735ab1417 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (sender=<optimized out>, m=m@entry=0x7f6737a15540 <QtWaylandClient::QWaylandDataSource::staticMetaObject>, local_signal_index=local_signal_index@entry=2, argv=argv@entry=0x7ffe044c98b0) at /usr/src/debug/dev-qt/qtcore-5.15.10/qtbase-everywhere-src-5.15.10/src/corelib/kernel/qobject.cpp:3985
#16 0x00007f673796d2a7 in QtWaylandClient::QWaylandDataSource::dndResponseUpdated(bool, Qt::DropAction) (this=<optimized out>, _t1=<optimized out>, _t2=<optimized out>) at .moc/moc_qwaylanddatasource_p.cpp:184
#17 0x00007f6737968809 in QtWayland::wl_data_source::handle_target(void*, wl_data_source*, char const*) (data=0x5623d50c8ba0, object=<optimized out>, mime_type=0x7f6724002e3c "text/uri-list") at qwayland-wayland.cpp:697
#18 0x00007f673689628a in ffi_call_unix64 () at /usr/src/debug/dev-libs/libffi-3.4.4-r1/libffi-3.4.4/src/x86/unix64.S:104
#19 0x00007f67368956a4 in ffi_call_int (cif=cif@entry=0x7ffe044c9ae0, fn=fn@entry=0x7f6737968750 <QtWayland::wl_data_source::handle_target(void*, wl_data_source*, char const*)>, rvalue=<optimized out>, rvalue@entry=0x0, avalue=<optimized out>, closure=closure@entry=0x0) at /usr/src/debug/dev-libs/libffi-3.4.4-r1/libffi-3.4.4/src/x86/ffi64.c:673
#20 0x00007f6736895dfd in ffi_call (cif=cif@entry=0x7ffe044c9ae0, fn=0x7f6737968750 <QtWayland::wl_data_source::handle_target(void*, wl_data_source*, char const*)>, rvalue=rvalue@entry=0x0, avalue=avalue@entry=0x7ffe044c9bb0) at /usr/src/debug/dev-libs/libffi-3.4.4-r1/libffi-3.4.4/src/x86/ffi64.c:710
#21 0x00007f673802d924 in wl_closure_invoke (closure=0x7f6724002d60, flags=<optimized out>, target=<optimized out>, opcode=0, data=<optimized out>) at ../wayland-1.22.0/src/connection.c:1025
#22 0x00007f6738029c68 in dispatch_event (display=display@entry=0x5623d49fc060, queue=0x5623d49fc150) at ../wayland-1.22.0/src/wayland-client.c:1631
#23 0x00007f673802b66c in dispatch_queue (queue=0x5623d49fc150, display=0x5623d49fc060) at ../wayland-1.22.0/src/wayland-client.c:1777
#24 wl_display_dispatch_queue_pending (display=0x5623d49fc060, queue=0x5623d49fc150) at ../wayland-1.22.0/src/wayland-client.c:2019
#25 0x00007f673793f196 in QtWaylandClient::QWaylandDisplay::flushRequests() (this=<optimized out>) at /usr/src/debug/dev-qt/qtwayland-5.15.10/qtwayland-everywhere-src-5.15.10/src/client/qwaylanddisplay.cpp:255
#26 0x00007f6735aaf624 in QObject::event(QEvent*) (this=0x5623d49fbf00, e=0x7f6720003e00) at /usr/src/debug/dev-qt/qtcore-5.15.10/qtbase-everywhere-src-5.15.10/src/corelib/kernel/qobject.cpp:1347
#27 0x00007f673716342e in QApplicationPrivate::notify_helper(QObject*, QEvent*) (this=<optimized out>, receiver=0x5623d49fbf00, e=0x7f6720003e00) at /usr/src/debug/dev-qt/qtwidgets-5.15.10-r1/qtbase-everywhere-src-5.15.10/src/widgets/kernel/qapplication.cpp:3640
#28 0x00007f6735a84218 in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0x5623d49fbf00, event=0x7f6720003e00) at /usr/src/debug/dev-qt/qtcore-5.15.10/qtbase-everywhere-src-5.15.10/src/corelib/kernel/qcoreapplication.cpp:1064
#29 0x00007f6735a8440e in QCoreApplication::sendEvent(QObject*, QEvent*) (receiver=<optimized out>, event=<optimized out>) at /usr/src/debug/dev-qt/qtcore-5.15.10/qtbase-everywhere-src-5.15.10/src/corelib/kernel/qcoreapplication.cpp:1462
#30 0x00007f6735a87753 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (receiver=0x0, event_type=0, data=0x5623d49be550) at /usr/src/debug/dev-qt/qtcore-5.15.10/qtbase-everywhere-src-5.15.10/src/corelib/kernel/qcoreapplication.cpp:1821
#31 0x00007f6735a879f8 in QCoreApplication::sendPostedEvents(QObject*, int) (receiver=<optimized out>, event_type=<optimized out>) at /usr/src/debug/dev-qt/qtcore-5.15.10/qtbase-everywhere-src-5.15.10/src/corelib/kernel/qcoreapplication.cpp:1680
#32 0x00007f6735ad6393 in postEventSourceDispatch(GSource*, GSourceFunc, gpointer) (s=0x5623d4a0e770) at /usr/src/debug/dev-qt/qtcore-5.15.10/qtbase-everywhere-src-5.15.10/src/corelib/kernel/qeventdispatcher_glib.cpp:277
#33 0x00007f673351458c in g_main_dispatch (context=0x7f6728000ee0) at ../glib-2.76.3/glib/gmain.c:3460
#34 g_main_context_dispatch (context=context@entry=0x7f6728000ee0) at ../glib-2.76.3/glib/gmain.c:4200
#35 0x00007f6733514838 in g_main_context_iterate (context=context@entry=0x7f6728000ee0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib-2.76.3/glib/gmain.c:4276
#36 0x00007f67335148cc in g_main_context_iteration (context=0x7f6728000ee0, may_block=1) at ../glib-2.76.3/glib/gmain.c:4343
#37 0x00007f6735ad5e96 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x5623d49dce00, flags=...) at /usr/src/debug/dev-qt/qtcore-5.15.10/qtbase-everywhere-src-5.15.10/src/corelib/kernel/qeventdispatcher_glib.cpp:423
#38 0x00007f6735a82c3b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x7ffe044ca110, flags=..., flags@entry=...) at /usr/src/debug/dev-qt/qtcore-5.15.10/qtbase-everywhere-src-5.15.10/include/QtCore/../../src/corelib/global/qflags.h:69
#39 0x00007f6735a8af16 in QCoreApplication::exec() () at /usr/src/debug/dev-qt/qtcore-5.15.10/qtbase-everywhere-src-5.15.10/include/QtCore/../../src/corelib/global/qflags.h:121
#40 0x00007f6735f1c3cc in QGuiApplication::exec() () at /usr/src/debug/dev-qt/qtgui-5.15.10/qtbase-everywhere-src-5.15.10/src/gui/kernel/qguiapplication.cpp:1870
#41 0x00007f67371633a5 in QApplication::exec() () at /usr/src/debug/dev-qt/qtwidgets-5.15.10-r1/qtbase-everywhere-src-5.15.10/src/widgets/kernel/qapplication.cpp:2832
#42 0x00005623d2c5d726 in main(int, char**) (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/kde-apps/spectacle-23.04.2/spectacle-23.04.2/src/Main.cpp:127
[Inferior 1 (process 26913) detached]

Reported using DrKonqi
Comment 1 Nicolas Fella 2023-07-28 13:00:25 UTC
also happens with Qt6

Application: Spectacle (spectacle), signal: Segmentation fault
Content of s_kcrashErrorMessage: std::unique_ptr<char []> = {get() = 0x0}
[KCrash Handler]
#5  0x00007f75eb523356 in QtPrivate::QExplicitlySharedDataPointerV2<QMapData<std::map<Qt::DropAction, QPixmap, std::less<Qt::DropAction>, std::allocator<std::pair<Qt::DropAction const, QPixmap> > > > >::operator bool (this=<optimized out>) at /usr/src/debug/qtbase-everywhere-src-6.5.1/build/include/QtCore/../../../src/corelib/tools/qshareddata_impl.h:117
#6  QMap<Qt::DropAction, QPixmap>::find (key=<optimized out>, this=<optimized out>) at /usr/src/debug/qtbase-everywhere-src-6.5.1/build/include/QtCore/../../../src/corelib/tools/qmap.h:649
#7  QMap<Qt::DropAction, QPixmap>::constFind (key=<optimized out>, this=<optimized out>) at /usr/src/debug/qtbase-everywhere-src-6.5.1/build/include/QtCore/../../../src/corelib/tools/qmap.h:656
#8  QDrag::dragCursor (this=0x0, action=Qt::CopyAction) at /usr/src/debug/qtbase-everywhere-src-6.5.1/src/gui/kernel/qdrag.cpp:282
#9  0x00007f75eb529869 in QBasicDrag::updateCursor (this=0x1420690, action=Qt::CopyAction) at /usr/src/debug/qtbase-everywhere-src-6.5.1/src/gui/kernel/qsimpledrag.cpp:274
#10 0x00007f75ed777d81 in operator() (action=Qt::CopyAction, accepted=true, __closure=<optimized out>) at /usr/src/debug/qtwayland-everywhere-src-6.5.1/src/client/qwaylanddatadevice.cpp:105
#11 QtPrivate::FunctorCall<QtPrivate::IndexesList<0, 1>, QtPrivate::List<bool, Qt::DropAction>, void, QtWaylandClient::QWaylandDataDevice::startDrag(QMimeData*, Qt::DropActions, QtWaylandClient::QWaylandWindow*)::<lambda(bool, Qt::DropAction)> >::call (arg=<optimized out>, f=...) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:127
#12 QtPrivate::Functor<QtWaylandClient::QWaylandDataDevice::startDrag(QMimeData*, Qt::DropActions, QtWaylandClient::QWaylandWindow*)::<lambda(bool, Qt::DropAction)>, 2>::call<QtPrivate::List<bool, Qt::DropAction>, void> (arg=<optimized out>, f=...) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:241
#13 QtPrivate::QFunctorSlotObject<QtWaylandClient::QWaylandDataDevice::startDrag(QMimeData*, Qt::DropActions, QtWaylandClient::QWaylandWindow*)::<lambda(bool, Qt::DropAction)>, 2, QtPrivate::List<bool, Qt::DropAction>, void>::impl(int, QtPrivate::QSlotObjectBase *, QObject *, void **, bool *) (which=<optimized out>, this_=<optimized out>, r=<optimized out>, a=<optimized out>, ret=<optimized out>) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:409
#14 0x00007f75eabba483 in QtPrivate::QSlotObjectBase::call (a=0x7ffca84b79b0, r=0x1413000, this=0x19edbb0) at /usr/src/debug/qtbase-everywhere-src-6.5.1/build/include/QtCore/../../../src/corelib/kernel/qobjectdefs_impl.h:363
#15 doActivate<false> (sender=0x1bbdef0, signal_index=5, argv=0x7ffca84b79b0) at /usr/src/debug/qtbase-everywhere-src-6.5.1/src/corelib/kernel/qobject.cpp:3992
#16 0x00007f75ed7731f9 in QtWaylandClient::QWaylandDataSource::dndResponseUpdated (this=<optimized out>, _t1=<optimized out>, _t2=<optimized out>) at /usr/src/debug/qtwayland-everywhere-src-6.5.1/build/src/client/WaylandClient_autogen/include/moc_qwaylanddatasource_p.cpp:238
#17 0x00007f75ed76ab7e in QtWayland::wl_data_source::handle_target (data=0x1bbdf00, object=<optimized out>, mime_type=0x7f75d80046cc "application/vnd.portal.filetransfer") at /usr/src/debug/qtwayland-everywhere-src-6.5.1/build/src/client/qwayland-wayland.cpp:734
#18 0x00007f75eb87b962 in ffi_call_unix64 () at ../src/x86/unix64.S:104
#19 0x00007f75eb8782df in ffi_call_int (cif=cif@entry=0x7ffca84b7c10, fn=<optimized out>, rvalue=<optimized out>, avalue=<optimized out>, closure=closure@entry=0x0) at ../src/x86/ffi64.c:673
#20 0x00007f75eb87af26 in ffi_call (cif=cif@entry=0x7ffca84b7c10, fn=<optimized out>, rvalue=rvalue@entry=0x0, avalue=avalue@entry=0x7ffca84b7ce0) at ../src/x86/ffi64.c:710
#21 0x00007f75ee161421 in wl_closure_invoke (closure=0x7f75d80045f0, flags=<optimized out>, target=<optimized out>, opcode=0, data=<optimized out>) at ../../src/wayland/src/connection.c:1025
#22 0x00007f75ee15db79 in dispatch_event (display=display@entry=0x1407500, queue=0x14075f0) at ../../src/wayland/src/wayland-client.c:1631
#23 0x00007f75ee15f374 in dispatch_queue (queue=0x14075f0, display=0x1407500) at ../../src/wayland/src/wayland-client.c:1777
#24 wl_display_dispatch_queue_pending (display=0x1407500, queue=0x14075f0) at ../../src/wayland/src/wayland-client.c:2019
#25 0x00007f75ed735662 in QtWaylandClient::QWaylandDisplay::flushRequests (this=<optimized out>) at /usr/src/debug/qtwayland-everywhere-src-6.5.1/src/client/qwaylanddisplay.cpp:234
#26 0x00007f75eaba4170 in QObject::event (this=0x1411850, e=0x7f75d40019f0) at /usr/src/debug/qtbase-everywhere-src-6.5.1/src/corelib/kernel/qobject.cpp:1391
#27 0x00007f75ecfbecce in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x1411850, e=0x7f75d40019f0) at /usr/src/debug/qtbase-everywhere-src-6.5.1/src/widgets/kernel/qapplication.cpp:3287
#28 0x00007f75eab65188 in QCoreApplication::notifyInternal2 (receiver=0x1411850, event=0x7f75d40019f0) at /usr/src/debug/qtbase-everywhere-src-6.5.1/src/corelib/kernel/qcoreapplication.cpp:1115
#29 0x00007f75eab651c9 in QCoreApplication::sendEvent (receiver=<optimized out>, event=<optimized out>) at /usr/src/debug/qtbase-everywhere-src-6.5.1/src/corelib/kernel/qcoreapplication.cpp:1533
#30 0x00007f75eab654c7 in QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=0, data=0x13fb220) at /usr/src/debug/qtbase-everywhere-src-6.5.1/src/corelib/kernel/qcoreapplication.cpp:1895
#31 0x00007f75ead541e3 in postEventSourceDispatch (s=0x1441930) at /usr/src/debug/qtbase-everywhere-src-6.5.1/src/corelib/kernel/qeventdispatcher_glib.cpp:243
#32 0x00007f75e8516988 in g_main_dispatch (context=0x7f75dc000f10) at ../glib/gmain.c:3460
#33 g_main_context_dispatch (context=context@entry=0x7f75dc000f10) at ../glib/gmain.c:4200
#34 0x00007f75e8516d98 in g_main_context_iterate (context=context@entry=0x7f75dc000f10, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/gmain.c:4276
#35 0x00007f75e8516e2c in g_main_context_iteration (context=0x7f75dc000f10, may_block=1) at ../glib/gmain.c:4343
#36 0x00007f75ead51d2c in QEventDispatcherGlib::processEvents (this=0x13b1110, flags=...) at /usr/src/debug/qtbase-everywhere-src-6.5.1/src/corelib/kernel/qeventdispatcher_glib.cpp:393
#37 0x00007f75eab6fafa in QEventLoop::exec (this=0x7ffca84b8270, flags=...) at /usr/src/debug/qtbase-everywhere-src-6.5.1/build/include/QtCore/../../../src/corelib/global/qflags.h:34
#38 0x00007f75eab69016 in QCoreApplication::exec () at /usr/src/debug/qtbase-everywhere-src-6.5.1/build/include/QtCore/../../../src/corelib/global/qflags.h:74
#39 0x00007f75eb1dc32c in QGuiApplication::exec () at /usr/src/debug/qtbase-everywhere-src-6.5.1/src/gui/kernel/qguiapplication.cpp:1894
#40 0x00007f75ecfbc0c5 in QApplication::exec () at /usr/src/debug/qtbase-everywhere-src-6.5.1/src/widgets/kernel/qapplication.cpp:2566
#41 0x000000000042831f in main (argc=<optimized out>, argv=<optimized out>) at /home/nico/kde6/src/spectacle/src/Main.cpp:127
[Inferior 1 (process 4463) detached]
Comment 3 Andreas Sturmlechner 2023-08-09 18:04:29 UTC

*** This bug has been marked as a duplicate of bug 470925 ***