Summary: | Dolphin crashes when undoing file copy | ||
---|---|---|---|
Product: | [Frameworks and Libraries] frameworks-kio | Reporter: | Patrick Silva <bugseforuns> |
Component: | general | Assignee: | KIO Bugs <kio-bugs-null> |
Status: | RESOLVED FIXED | ||
Severity: | crash | CC: | kdelibs-bugs, kfm-devel, meven29 |
Priority: | NOR | ||
Version: | git master | ||
Target Milestone: | --- | ||
Platform: | Neon | ||
OS: | Linux | ||
Latest Commit: | https://invent.kde.org/frameworks/kwidgetsaddons/commit/99d8dca607327ebf0b6d2f3cff089207c61d7276 | Version Fixed In: | 5.87 |
Sentry Crash Report: |
Description
Patrick Silva
2021-09-12 11:28:22 UTC
Thread 1 "dolphin" received signal SIGSEGV, Segmentation fault. QList<KIO::BasicOperation>::QList (this=this@entry=0x7fffffffc718, l=...) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qlist.h:856 856 if (!d->ref.ref()) { (gdb) bt #0 QList<KIO::BasicOperation>::QList (this=this@entry=0x7fffffffc718, l=...) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qlist.h:856 #1 0x00007ffff7bc6237 in QQueue<KIO::BasicOperation>::QQueue (this=0x7fffffffc718) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qqueue.h:49 #2 KIO::UndoCommand::UndoCommand (this=0x7fffffffc710) at /home/meven/kde/src/kio/src/widgets/fileundomanager_p.h:52 #3 QStack<KIO::UndoCommand>::pop (this=0x555555786c30) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qstack.h:62 #4 KIO::FileUndoManagerPrivate::slotPop (this=this@entry=0x555555786c20) at /home/meven/kde/src/kio/src/widgets/fileundomanager.cpp:641 #5 0x00007ffff7bc64fe in KIO::FileUndoManagerPrivate::startUndo (this=0x555555786c20) at /home/meven/kde/src/kio/src/widgets/fileundomanager.cpp:389 #6 0x00007ffff5e7d5c7 in QtPrivate::QSlotObjectBase::call (a=0x7fffffffc900, r=0x7ffff7c48620 <(anonymous namespace)::Q_QGS_globalFileUndoManager::innerFunction()::holder>, this=0x555556456ae0) at ../../include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:398 #7 doActivate<false> (sender=0x55555685ac50, signal_index=5, argv=argv@entry=0x7fffffffc900) at kernel/qobject.cpp:3886 #8 0x00007ffff5e76728 in QMetaObject::activate (sender=<optimized out>, m=m@entry=0x7ffff79fbaa0 <KIO::AskUserActionInterface::staticMetaObject>, local_signal_index=local_signal_index@entry=2, argv=argv@entry=0x7fffffffc900) at kernel/qobject.cpp:3946 #9 0x00007ffff78c3295 in KIO::AskUserActionInterface::askUserDeleteResult (this=<optimized out>, _t1=<optimized out>, _t1@entry=true, _t2=..., _t3=<optimized out>, _t4=<optimized out>) at /home/meven/kde/build/kio/src/core/KF5KIOCore_autogen/EWIEGA46WW/moc_askuseractioninterface.cpp:225 #10 0x00007ffff7bb7270 in operator() (buttonCode=16384, __closure=0x555556ddec50) at /home/meven/kde/src/kio/src/widgets/widgetsaskuseractionhandler.cpp:197 #11 QtPrivate::FunctorCall<QtPrivate::IndexesList<0>, QtPrivate::List<int>, void, KIO::WidgetsAskUserActionHandler::askUserDelete(const QList<QUrl>&, KIO::AskUserActionInterface::DeletionType, KIO::AskUserActionInterface::ConfirmationType, QWidget*)::<lambda(int)> >::call (arg=<optimized out>, f=...) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs_impl.h:146 Somehow the startUndo() function is called twice because as if KIO::AskUserActionInterface::askUserDeleteResult was emitted twice with the same arguments even. The two call to have the exact same backtrace, and are called within ~ 5 ms. allowDelete (QUrl("file:///home/meven/test")) 0 DolphinMainWindow(0x55555578a2a0, name="Dolphin#1") QDateTime(2021-10-01 19:08:19.276 CEST Qt::LocalTime) allowDelete (QUrl("file:///home/meven/test")) 0 DolphinMainWindow(0x55555578a2a0, name="Dolphin#1") QDateTime(2021-10-01 19:08:19.281 CEST Qt::LocalTime) A possibly relevant merge request was started @ https://invent.kde.org/frameworks/kwidgetsaddons/-/merge_requests/101 Git commit 99d8dca607327ebf0b6d2f3cff089207c61d7276 by Méven Car, on behalf of Ahmad Samir. Committed on 03/10/2021 at 05:34. Pushed by ahmadsamir into branch 'master'. KMessageDialog: disconnect default buttonbox signals as we emit done() manually QDialogButtonBox internally creates some default connections, e.g. connects OK clicked() to accepted(); then we emit done(buttoncode), the resultant is that one button press causes two clicked signals to get emitted; which leads some interesting behavoiur, e.g. undo'ing a file copy in dolphin, invokes the askuserdelete dialog, you click deleted and get a crash in KIO, since the code tries to undo the copy twice... FIXED-IN: 5.87 M +6 -0 src/kmessagedialog.cpp https://invent.kde.org/frameworks/kwidgetsaddons/commit/99d8dca607327ebf0b6d2f3cff089207c61d7276 |