Skip to content

dropjob: don't create PasteJob when `m_hasArkFormat` is true

Fushan Wen requested to merge work/fuf/dropjob-emergent-fix into master

URGENT FIX FOR 5.94!

PasteJob will cause a crash if m_hasArkFormat is true.

Backtrace
(gdb) bt
#0  0x00007ffff52b7c2a in std::__atomic_base<QtSharedPointer::ExternalRefCountData*>::load(std::memory_order) const (__m=std::memory_order_relaxed, this=<optimized out>) at /usr/include/c++/11/bits/atomic_base.h:838
#1  std::atomic<QtSharedPointer::ExternalRefCountData*>::load(std::memory_order) const (__m=std::memory_order_relaxed, this=<optimized out>) at /usr/include/c++/11/atomic:570
#2  QAtomicOps<QtSharedPointer::ExternalRefCountData*>::loadRelaxed<QtSharedPointer::ExternalRefCountData*>(std::atomic<QtSharedPointer::ExternalRefCountData*> const&) (_q_value=<optimized out>) at ../../include/QtCore/../../src/corelib/thread/qatomic_cxx11.h:239
#3  QBasicAtomicPointer<QtSharedPointer::ExternalRefCountData>::loadRelaxed() const (this=<optimized out>) at ../../include/QtCore/../../src/corelib/thread/qbasicatomic.h:248
#4  QtSharedPointer::ExternalRefCountData::getAndRef(QObject const*) (obj=obj@entry=0x7fffec00f950) at tools/qsharedpointer.cpp:1396
#5  0x00007ffff4b2519f in QWeakPointer<QObject const>::QWeakPointer<QMimeData const, true>(QMimeData const*, bool) (ptr=0x7fffec00f950, this=0x2e2e070) at /usr/include/qt5/QtCore/qsharedpointer_impl.h:679
#6  QPointer<QMimeData const>::QPointer(QMimeData const*) (p=0x7fffec00f950, this=0x2e2e070) at /usr/include/qt5/QtCore/qpointer.h:62
#7  KIO::PasteJobPrivate::PasteJobPrivate(QMimeData const*, QUrl const&, QFlags<KIO::JobFlag>, bool) (clipboard=false, flags=..., destDir=..., mimeData=0x7fffec00f950, this=0x2e2e010) at /mnt/data/home/qydw/Develop/KDE/Frameworks/kio/src/widgets/pastejob_p.h:23
#8  KIO::PasteJobPrivate::newJob(QMimeData const*, QUrl const&, QFlags<KIO::JobFlag>, bool) (clipboard=false, flags=..., destDir=..., mimeData=0x7fffec00f950) at /mnt/data/home/qydw/Develop/KDE/Frameworks/kio/src/widgets/pastejob_p.h:51
#9  KIO::DropJobPrivate::slotStart() (this=0x57dbec0) at /mnt/data/home/qydw/Develop/KDE/Frameworks/kio/src/widgets/dropjob.cpp:271
#10 0x00007ffff548728e in QObject::event(QEvent*) (this=0x3f77c50, e=0x2e92990) at kernel/qobject.cpp:1314
#11 0x00007ffff61fab0f in QApplicationPrivate::notify_helper(QObject*, QEvent*) (this=<optimized out>, receiver=0x3f77c50, e=0x2e92990) at kernel/qapplication.cpp:3632
#12 0x00007ffff545ab5a in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0x3f77c50, event=0x2e92990) at kernel/qcoreapplication.cpp:1064
#13 0x00007ffff545db97 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (receiver=0x0, event_type=0, data=0x4ad9a0) at kernel/qcoreapplication.cpp:1821
#14 0x00007ffff54b2c33 in postEventSourceDispatch(GSource*, GSourceFunc, gpointer) (s=s@entry=0x628d90) at kernel/qeventdispatcher_glib.cpp:277
#15 0x00007ffff373c122 in g_main_dispatch (context=0x7fffec005010) at ../glib/gmain.c:3417
#16 g_main_context_dispatch (context=0x7fffec005010) at ../glib/gmain.c:4135
#17 0x00007ffff373c4b8 in g_main_context_iterate (context=context@entry=0x7fffec005010, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/gmain.c:4211
#18 0x00007ffff373c56f in g_main_context_iteration (context=0x7fffec005010, may_block=1) at ../glib/gmain.c:4276
#19 0x00007ffff54b22b4 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x63c9f0, flags=...) at kernel/qeventdispatcher_glib.cpp:423
#20 0x00007ffff545955b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x7fffffffd580, flags=..., flags@entry=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:69
#21 0x00007ffff5461820 in QCoreApplication::exec() () at ../../include/QtCore/../../src/corelib/global/qflags.h:121
#22 0x00007ffff58ab61c in QGuiApplication::exec() () at kernel/qguiapplication.cpp:1867
#23 0x00007ffff61faa85 in QApplication::exec() () at kernel/qapplication.cpp:2824
#24 0x00000000004236b5 in main(int, char**) (argc=<optimized out>, argv=<optimized out>) at /mnt/data/home/qydw/Develop/KDE/Plasma/plasma-workspace/shell/main.cpp:240
Edited by Fushan Wen

Merge request reports