Bug 489316 - Plasma crashed on Wayland inDataControlSource::~DataControlSource() after I copied some text (history file attached)
Summary: Plasma crashed on Wayland inDataControlSource::~DataControlSource() after I c...
Status: RESOLVED FIXED
Alias: None
Product: plasmashell
Classification: Plasma
Component: Clipboard widget & pop-up (show other bugs)
Version: master
Platform: Other Linux
: NOR crash
Target Milestone: 1.0
Assignee: Plasma Bugs List
URL:
Keywords: regression
Depends on:
Blocks:
 
Reported: 2024-06-27 15:33 UTC by Nate Graham
Modified: 2024-06-27 17:11 UTC (History)
0 users

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


Attachments
Klipper history file (12.35 KB, application/octet-stream)
2024-06-27 15:33 UTC, Nate Graham
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Nate Graham 2024-06-27 15:33:39 UTC
Created attachment 171089 [details]
Klipper history file

Current git master everything as of today, Qt 6.7.1.

Backtrace:

Thread 1 (Thread 0x7f42f7ef5b80 (LWP 177458)):
[KCrash Handler]
#5  0x0000000000000000 in ??? ()
#6  0x00007f42ffd3a409 in std::default_delete<QMimeData>::operator() (this=<optimized out>, __ptr=<optimized out>) at /usr/include/c++/14/bits/unique_ptr.h:87
#7  std::unique_ptr<QMimeData, std::default_delete<QMimeData> >::~unique_ptr (this=0x23df2ac0, __in_chrg=<optimized out>) at /usr/include/c++/14/bits/unique_ptr.h:398
#8  DataControlSource::~DataControlSource (this=0x23df2aa0, __in_chrg=<optimized out>) at /home/nate/kde/src/kguiaddons/src/systemclipboard/waylandclipboard.cpp:273
#9  DataControlSource::~DataControlSource (this=0x23df2aa0, __in_chrg=<optimized out>) at /home/nate/kde/src/kguiaddons/src/systemclipboard/waylandclipboard.cpp:273
#10 std::default_delete<DataControlSource>::operator() (this=<optimized out>, __ptr=0x23df2aa0) at /usr/include/c++/14/bits/unique_ptr.h:93
#11 std::__uniq_ptr_impl<DataControlSource, std::default_delete<DataControlSource> >::reset (this=<optimized out>, __p=0x0) at /usr/include/c++/14/bits/unique_ptr.h:205
#12 std::unique_ptr<DataControlSource, std::default_delete<DataControlSource> >::reset (this=<optimized out>, __p=0x0) at /usr/include/c++/14/bits/unique_ptr.h:503
#13 operator() (__closure=<optimized out>) at /home/nate/kde/src/kguiaddons/src/systemclipboard/waylandclipboard.cpp:450
#14 QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, DataControlDevice::setSelection(std::unique_ptr<DataControlSource>)::<lambda()> >::call (f=<optimized out>, arg=<optimized out>) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:137
#15 QtPrivate::FunctorCallable<DataControlDevice::setSelection(std::unique_ptr<DataControlSource>)::<lambda()> >::call<QtPrivate::List<>, void> (f=<optimized out>, arg=<optimized out>) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:345
#16 QtPrivate::QCallableObject<DataControlDevice::setSelection(std::unique_ptr<DataControlSource>)::<lambda()>, QtPrivate::List<>, 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:555
#17 0x00007f42fd9fa752 in QtPrivate::QSlotObjectBase::call (this=0x23df8090, r=<optimized out>, a=0x7ffc8f46ca48) at /usr/src/debug/qt6-qtbase-6.7.1-2.fc40.x86_64/src/corelib/kernel/qobjectdefs_impl.h:469
#18 doActivate<false> (sender=0x23df2aa0, signal_index=3, argv=0x7ffc8f46ca48) at /usr/src/debug/qt6-qtbase-6.7.1-2.fc40.x86_64/src/corelib/kernel/qobject.cpp:4086
#19 0x00007f42fd670056 in ffi_call_unix64 () at ../src/x86/unix64.S:104
#20 0x00007f42fd66c6a0 in ffi_call_int (cif=cif@entry=0x7ffc8f46cc60, fn=<optimized out>, rvalue=<optimized out>, avalue=<optimized out>, closure=closure@entry=0x0) at ../src/x86/ffi64.c:673
#21 0x00007f42fd66f4ee in ffi_call (cif=cif@entry=0x7ffc8f46cc60, fn=<optimized out>, rvalue=rvalue@entry=0x0, avalue=avalue@entry=0x7ffc8f46cd30) at ../src/x86/ffi64.c:710
#22 0x00007f4301163f2e in wl_closure_invoke (closure=closure@entry=0x7f42d40117c0, target=<optimized out>, target@entry=0x23e0da80, opcode=opcode@entry=1, data=<optimized out>, flags=1) at ../src/connection.c:1025
#23 0x00007f43011647a3 in dispatch_event (display=display@entry=0x20af39b0, queue=0x20af3aa0) at ../src/wayland-client.c:1631
#24 0x00007f4301164a4c in dispatch_queue (queue=0x20af3aa0, display=0x20af39b0) at ../src/wayland-client.c:1777
#25 wl_display_dispatch_queue_pending (display=0x20af39b0, queue=0x20af3aa0) at ../src/wayland-client.c:2019
#26 0x00007f42ff2cbc22 in QtWaylandClient::QWaylandDisplay::flushRequests (this=<optimized out>) at /usr/src/debug/qt6-qtwayland-6.7.1-1.fc40.x86_64/src/client/qwaylanddisplay.cpp:227
#27 0x00007f42fd9ebdeb in QObject::event (this=0x20af3780, e=0x7f42dc002310) at /usr/src/debug/qt6-qtbase-6.7.1-2.fc40.x86_64/src/corelib/kernel/qobject.cpp:1452
#28 0x00007f430018b168 in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x20af3780, e=0x7f42dc002310) at /usr/src/debug/qt6-qtbase-6.7.1-2.fc40.x86_64/src/widgets/kernel/qapplication.cpp:3287
#29 0x00007f42fd995b18 in QCoreApplication::notifyInternal2 (receiver=0x20af3780, event=0x7f42dc002310) at /usr/src/debug/qt6-qtbase-6.7.1-2.fc40.x86_64/src/corelib/kernel/qcoreapplication.cpp:1134
#30 0x00007f42fd995d7d in QCoreApplication::sendEvent (receiver=<optimized out>, event=<optimized out>) at /usr/src/debug/qt6-qtbase-6.7.1-2.fc40.x86_64/src/corelib/kernel/qcoreapplication.cpp:1575
#31 0x00007f42fd9998c1 in QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=0, data=0x20aeb0e0) at /usr/src/debug/qt6-qtbase-6.7.1-2.fc40.x86_64/src/corelib/kernel/qcoreapplication.cpp:1932
#32 0x00007f42fd999b6d in QCoreApplication::sendPostedEvents (receiver=<optimized out>, event_type=<optimized out>) at /usr/src/debug/qt6-qtbase-6.7.1-2.fc40.x86_64/src/corelib/kernel/qcoreapplication.cpp:1789
#33 0x00007f42fdc7d39f in postEventSourceDispatch (s=0x20bf4a00) at /usr/src/debug/qt6-qtbase-6.7.1-2.fc40.x86_64/src/corelib/kernel/qeventdispatcher_glib.cpp:244
#34 0x00007f42fcd97e8c in g_main_dispatch (context=0x7f42e4000f00) at ../glib/gmain.c:3344
#35 g_main_context_dispatch_unlocked (context=0x7f42e4000f00) at ../glib/gmain.c:4152
#36 0x00007f42fcdf9c98 in g_main_context_iterate_unlocked.isra.0 (context=context@entry=0x7f42e4000f00, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/gmain.c:4217
#37 0x00007f42fcd99383 in g_main_context_iteration (context=0x7f42e4000f00, may_block=1) at ../glib/gmain.c:4282
#38 0x00007f42fdc7cb53 in QEventDispatcherGlib::processEvents (this=0x20af0dd0, flags=...) at /usr/src/debug/qt6-qtbase-6.7.1-2.fc40.x86_64/src/corelib/kernel/qeventdispatcher_glib.cpp:394
#39 0x00007f42fd9a2713 in QEventLoop::exec (this=this@entry=0x7ffc8f46d370, flags=..., flags@entry=...) at /usr/src/debug/qt6-qtbase-6.7.1-2.fc40.x86_64/src/corelib/global/qflags.h:34
#40 0x00007f42fd99e69c in QCoreApplication::exec () at /usr/src/debug/qt6-qtbase-6.7.1-2.fc40.x86_64/src/corelib/global/qflags.h:74
#41 0x00007f42fe3d53dd in QGuiApplication::exec () at /usr/src/debug/qt6-qtbase-6.7.1-2.fc40.x86_64/src/gui/kernel/qguiapplication.cpp:1926
#42 0x00007f430018b0d9 in QApplication::exec () at /usr/src/debug/qt6-qtbase-6.7.1-2.fc40.x86_64/src/widgets/kernel/qapplication.cpp:2555
#43 0x0000000000427a86 in main (argc=<optimized out>, argv=<optimized out>) at /home/nate/kde/src/plasma-workspace/shell/main.cpp:188
Comment 1 Nate Graham 2024-06-27 16:44:19 UTC
Just had it happen again the moment I pasted the text "handleScreensChanged" into a website on Firefox.
Comment 2 Fushan Wen 2024-06-27 17:11:45 UTC
Git commit 2e76f0bcf671a1998716b97056fd44b3148bc1b6 by Fushan Wen.
Committed on 27/06/2024 at 17:09.
Pushed by fusionfuture into branch 'master'.

klipper: fix mimeData ownership

In SystemClipboard::setMimeData, setMimeData must not share mimeData
with other setMimeData calls because setMimeData takes ownership.
FIXED-IN: 6.2

M  +7    -7    klipper/klipper.cpp
M  +12   -9    klipper/systemclipboard.cpp
M  +2    -1    klipper/systemclipboard.h

https://invent.kde.org/plasma/plasma-workspace/-/commit/2e76f0bcf671a1998716b97056fd44b3148bc1b6