Summary: | Copying and pasting folders crashed (maybe because of broken symlinks) | ||
---|---|---|---|
Product: | [Applications] dolphin | Reporter: | seplexfake |
Component: | general | Assignee: | Dolphin Bug Assignee <dolphin-bugs-null> |
Status: | RESOLVED DUPLICATE | ||
Severity: | crash | CC: | kfm-devel, nate |
Priority: | NOR | Keywords: | drkonqi |
Version: | 20.12.1 | ||
Target Milestone: | --- | ||
Platform: | Fedora RPMs | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: |
Description
seplexfake
2021-01-30 12:42:21 UTC
This is the github repo that I made that I was talking about in the description https://github.com/Seplx/Dolphin_crash_copypaste Steps to reproduce: 1. Clone the repo 2. Go to the 'one' folder and copy all of its contents 3. Go to the 'two' folder and paste everything there. 4. You should get a popup, click on skip 5. You should get another popup, click on skip. And it should crash Upon investigation it seem like it crashes when a symlink tries to "overwrite a folder". If you copy a symlink called a 'folder' and paste it to a folder where there is a folder called 'folder' you would get a prompt to rename the "item" because an item called 'folder' already exists. But the fact that there are folders with the same names that have files with the same names in a directory that you are copying from and to the directory where you are pasting to makes you get the 'File Already Exists' prompt, but you can bypass that one by clicking on 'Write Into' and Clicking on 'Overwrite' next. The folder you are pasting and the folder you are pasting to also must have a folder that is alphabetically behind them and in front of them (so example 'A-Filler' and 'Z-Filler' like I called it in my github repo. Could just be A and Z tho). You also must overwrite 2 folders with 2 symlinks because when it's just 1 you can skip that without a crash, when it's 2 if you skip it twice you get a crash. I crafted a more simple "crasher" based on this that still crashes Dolphin. See: https://github.com/Seplx/Dolphin_crash_copypaste/tree/simpler To make it crash: 1. Clone the repo and go to it in Dolphin 2. Copy everything from the 'COPY' folder and paste it to the 'PASTE' folder. 3. You should get a popup, click on skip 4. You should get another popup, click on skip. And it should crash. I was able to reproduce this with openSUSE Tumbleweed The backtrace is different though. Application: dolphin (20.12.1) Qt Version: 5.15.2 Frameworks Version: 5.78.0 Operating System: Linux 5.10.9-1-default x86_64 Windowing system: X11 Distribution: openSUSE Tumbleweed Application: Dolphin (dolphin), signal: Segmentation fault [KCrash Handler] #4 QUrl::isValid (this=<optimized out>, this=<optimized out>) at io/qurl.cpp:1631 #5 QUrl::isValid (this=0x7ffdd7f50fa8) at io/qurl.cpp:1877 #6 0x00007f698d68129e in QUrl::adjusted (this=this@entry=0x7ffdd7f50fa8, options=options@entry=...) at io/qurl.cpp:3413 #7 0x00007f698f0b2385 in KIO::CopyJobPrivate::skip (this=this@entry=0x55713684ba80, sourceUrl=..., isDir=isDir@entry=false) at /usr/src/debug/kio-5.78.0-1.1.x86_64/src/core/copyjob.cpp:1044 #8 0x00007f698f0b60fa in KIO::CopyJobPrivate::processFileRenameDialogResult (this=0x55713684ba80, it=..., result=<optimized out>, newUrl=..., destmtime=...) at /usr/src/debug/kio-5.78.0-1.1.x86_64/src/core/copyjob.cpp:1643 #9 0x00007f698f0bd5a5 in operator() (parentJob=<optimized out>, result=KIO::Result_Skip, __closure=0x55713688a7b0) at /usr/src/debug/kio-5.78.0-1.1.x86_64/src/core/copyjob.cpp:1584 #10 QtPrivate::FunctorCall<QtPrivate::IndexesList<0, 1>, QtPrivate::List<KIO::RenameDialog_Result, KJob*>, void, KIO::CopyJobPrivate::slotResultErrorCopyingFiles(KJob*)::<lambda(KIO::SkipDialog_Result, KJob*)> >::call (arg=<optimized out>, f=...) at /usr/include/qt5/QtCore/qobjectdefs_impl.h:146 #11 QtPrivate::Functor<KIO::CopyJobPrivate::slotResultErrorCopyingFiles(KJob*)::<lambda(KIO::SkipDialog_Result, KJob*)>, 2>::call<QtPrivate::List<KIO::RenameDialog_Result, KJob*>, void> (arg=<optimized out>, f=...) at /usr/include/qt5/QtCore/qobjectdefs_impl.h:256 #12 QtPrivate::QFunctorSlotObject<KIO::CopyJobPrivate::slotResultErrorCopyingFiles(KJob*)::<lambda(KIO::SkipDialog_Result, KJob*)>, 2, QtPrivate::List<KIO::RenameDialog_Result, KJob*>, void>::impl(int, QtPrivate::QSlotObjectBase *, QObject *, void **, bool *) (which=<optimized out>, this_=0x55713688a7a0, r=<optimized out>, a=<optimized out>, ret=<optimized out>) at /usr/include/qt5/QtCore/qobjectdefs_impl.h:443 #13 0x00007f698d76b8c6 in QtPrivate::QSlotObjectBase::call (a=0x7ffdd7f511d0, r=0x55713670d080, this=0x55713688a7a0) at ../../include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:398 #14 doActivate<false> (sender=0x557136857c70, signal_index=4, argv=argv@entry=0x7ffdd7f511d0) at kernel/qobject.cpp:3886 #15 0x00007f698d764c20 in QMetaObject::activate (sender=<optimized out>, m=m@entry=0x7f698f192780 <KIO::AskUserActionInterface::staticMetaObject>, local_signal_index=local_signal_index@entry=1, argv=argv@entry=0x7ffdd7f511d0) at kernel/qobject.cpp:3946 #16 0x00007f698f09243d in KIO::AskUserActionInterface::askUserSkipResult (this=<optimized out>, _t1=<optimized out>, _t2=<optimized out>) at /usr/src/debug/kio-5.78.0-1.1.x86_64/build/src/core/KF5KIOCore_autogen/EWIEGA46WW/moc_askuseractioninterface.cpp:218 #17 0x00007f698d76b8c6 in QtPrivate::QSlotObjectBase::call (a=0x7ffdd7f512f0, r=0x557136857c70, this=0x557136851060) at ../../include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:398 #18 doActivate<false> (sender=0x5571367a4710, signal_index=7, argv=argv@entry=0x7ffdd7f512f0) at kernel/qobject.cpp:3886 #19 0x00007f698d764c20 in QMetaObject::activate (sender=<optimized out>, m=m@entry=0x7f698e8b0720 <QDialog::staticMetaObject>, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7ffdd7f512f0) at kernel/qobject.cpp:3946 #20 0x00007f698e59bc5e in QDialog::finished (this=<optimized out>, _t1=<optimized out>) at .moc/moc_qdialog.cpp:230 #21 0x00007f698d76b8c6 in QtPrivate::QSlotObjectBase::call (a=0x7ffdd7f51410, r=0x5571367a4710, this=0x55713689af80) at ../../include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:398 #22 doActivate<false> (sender=0x557136896720, signal_index=9, argv=argv@entry=0x7ffdd7f51410) at kernel/qobject.cpp:3886 #23 0x00007f698d764c20 in QMetaObject::activate (sender=sender@entry=0x557136896720, m=m@entry=0x7f698e8a04e0 <QAbstractButton::staticMetaObject>, local_signal_index=local_signal_index@entry=2, argv=argv@entry=0x7ffdd7f51410) at kernel/qobject.cpp:3946 #24 0x00007f698e4913e2 in QAbstractButton::clicked (this=this@entry=0x557136896720, _t1=<optimized out>) at .moc/moc_qabstractbutton.cpp:308 #25 0x00007f698e491d4a in QAbstractButtonPrivate::emitClicked (this=this@entry=0x557136843080) at widgets/qabstractbutton.cpp:415 #26 0x00007f698e49369f in QAbstractButtonPrivate::click (this=this@entry=0x557136843080) at widgets/qabstractbutton.cpp:408 #27 0x00007f698e493871 in QAbstractButton::mouseReleaseEvent (this=0x557136896720, e=0x7ffdd7f519e0) at widgets/qabstractbutton.cpp:1044 #28 0x00007f698e3e435e in QWidget::event (this=0x557136896720, event=0x7ffdd7f519e0) at kernel/qwidget.cpp:9019 #29 0x00007f698e3a450f in QApplicationPrivate::notify_helper (this=this@entry=0x557135d92e70, receiver=receiver@entry=0x557136896720, e=e@entry=0x7ffdd7f519e0) at kernel/qapplication.cpp:3632 #30 0x00007f698e3ab3fb in QApplication::notify (this=0x7ffdd7f516e0, receiver=0x557136896720, e=0x7ffdd7f519e0) at kernel/qapplication.cpp:3076 #31 0x00007f698d7352ea in QCoreApplication::notifyInternal2 (receiver=0x557136896720, event=0x7ffdd7f519e0) at kernel/qcoreapplication.cpp:1063 #32 0x00007f698e3aa426 in QApplicationPrivate::sendMouseEvent (receiver=receiver@entry=0x557136896720, event=event@entry=0x7ffdd7f519e0, alienWidget=alienWidget@entry=0x557136896720, nativeWidget=0x5571367a4710, buttonDown=buttonDown@entry=0x7f698e8d2670 <qt_button_down>, lastMouseReceiver=..., spontaneous=true, onlyDispatchEnterLeave=false) at kernel/qapplication.cpp:2614 #33 0x00007f698e3fc3c1 in QWidgetWindow::handleMouseEvent (this=0x55713689b600, event=0x7ffdd7f51ca0) at kernel/qwidgetwindow.cpp:683 #34 0x00007f698e3ff8ce in QWidgetWindow::event (this=0x55713689b600, event=0x7ffdd7f51ca0) at kernel/qwidgetwindow.cpp:300 #35 0x00007f698e3a450f in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x55713689b600, e=0x7ffdd7f51ca0) at kernel/qapplication.cpp:3632 #36 0x00007f698d7352ea in QCoreApplication::notifyInternal2 (receiver=0x55713689b600, event=0x7ffdd7f51ca0) at kernel/qcoreapplication.cpp:1063 #37 0x00007f698dc60b73 in QGuiApplicationPrivate::processMouseEvent (e=0x557136865250) at kernel/qguiapplication.cpp:2282 #38 0x00007f698dc36c5c in QWindowSystemInterface::sendWindowSystemEvents (flags=flags@entry=...) at kernel/qwindowsysteminterface.cpp:1169 #39 0x00007f6988817fea in xcbSourceDispatch (source=<optimized out>) at qxcbeventdispatcher.cpp:105 #40 0x00007f698b546e57 in g_main_context_dispatch () from /usr/lib64/libglib-2.0.so.0 #41 0x00007f698b5471d8 in ?? () from /usr/lib64/libglib-2.0.so.0 #42 0x00007f698b54728f in g_main_context_iteration () from /usr/lib64/libglib-2.0.so.0 #43 0x00007f698d78c83f in QEventDispatcherGlib::processEvents (this=0x557135e66270, flags=...) at kernel/qeventdispatcher_glib.cpp:423 #44 0x00007f698d733cab in QEventLoop::exec (this=this@entry=0x7ffdd7f51fd0, flags=..., flags@entry=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:69 #45 0x00007f698d73bf20 in QCoreApplication::exec () at ../../include/QtCore/../../src/corelib/global/qflags.h:121 #46 0x00007f698f8e1169 in kdemain () from /usr/lib64/libkdeinit5_dolphin.so #47 0x00007f698f6ea152 in __libc_start_main () from /lib64/libc.so.6 #48 0x0000557134bbb08e in _start () [Inferior 1 (process 10947) detached] *** This bug has been marked as a duplicate of bug 431731 *** |