Bug 369249 - Copying/Moving a file onto itself in folderview crashes plasmashell
Summary: Copying/Moving a file onto itself in folderview crashes plasmashell
Status: RESOLVED FIXED
Alias: None
Product: plasmashell
Classification: Plasma
Component: general (show other bugs)
Version: 5.7.5
Platform: openSUSE Linux
: NOR crash
Target Milestone: 1.0
Assignee: David Edmundson
URL:
Keywords: drkonqi
Depends on:
Blocks:
 
Reported: 2016-09-23 16:18 UTC by Wolfgang Bauer
Modified: 2016-09-24 10:25 UTC (History)
3 users (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Wolfgang Bauer 2016-09-23 16:18:24 UTC
Application: plasmashell (5.7.5)

Qt Version: 5.7.0
Frameworks Version: 5.26.0
Operating System: Linux 3.16.7-42-desktop x86_64
Distribution: "openSUSE 13.2 (Harlequin) (x86_64)"

-- Information about the crash:
- What I was doing when the application crashed:
Right-click on a file in the folderview applet, choose "Move to" or "Copy to", and select the very same folder where the file is located ($HOME/Desktop on my case).
When the "Overwrite/Rename/Cancel" dialog should be displayed, plasmashell crashed instead.

- This is reproducible with Plasma 5.7.5 and 5.8 beta (otherwise I am using KDE Frameworks 5.26.0 and Qt 5.7.0).

- The crash is in KIO obviously, but I cannot reproduce it with dolphin.

- It doesn't always happen (sometimes the dialog shows up as it should), but most of the time.
Seems to be more reliably reproducible by choosing the destination from the context menu instead of choosing "Browse...", but it also happened with the latter at least once.

- Also reported in openSUSE:
http://bugzilla.opensuse.org/show_bug.cgi?id=1000546

The crash can be reproduced every time.

-- Backtrace:
Application: Plasma (plasmashell), signal: Segmentation fault
Using host libthread_db library "/lib64/libthread_db.so.1".
[Current thread is 1 (Thread 0x7f890fbdc7c0 (LWP 3262))]

Thread 12 (Thread 0x7f88f9aeb700 (LWP 3265)):
#0  0x00007f89093a788d in poll () at /lib64/libc.so.6
#1  0x00007f890e23d422 in  () at /usr/lib64/libxcb.so.1
#2  0x00007f890e23f09f in xcb_wait_for_event () at /usr/lib64/libxcb.so.1
#3  0x00007f88fc0d6359 in  () at /usr/lib64/libQt5XcbQpa.so.5
#4  0x00007f8909a29fa9 in  () at /usr/lib64/libQt5Core.so.5
#5  0x00007f8908bb10a4 in start_thread () at /lib64/libpthread.so.0
#6  0x00007f89093afcbd in clone () at /lib64/libc.so.6

Thread 11 (Thread 0x7f88f3df5700 (LWP 3269)):
#0  0x00007f89047b3904 in g_mutex_unlock () at /usr/lib64/libglib-2.0.so.0
#1  0x00007f8904771280 in g_main_context_prepare () at /usr/lib64/libglib-2.0.so.0
#2  0x00007f8904771b03 in  () at /usr/lib64/libglib-2.0.so.0
#3  0x00007f8904771cec in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0
#4  0x00007f8909c3004b in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#5  0x00007f8909bdfa6b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#6  0x00007f8909a2577a in QThread::exec() () at /usr/lib64/libQt5Core.so.5
#7  0x00007f890a79d4b5 in  () at /usr/lib64/libQt5DBus.so.5
#8  0x00007f8909a29fa9 in  () at /usr/lib64/libQt5Core.so.5
#9  0x00007f8908bb10a4 in start_thread () at /lib64/libpthread.so.0
#10 0x00007f89093afcbd in clone () at /lib64/libc.so.6

Thread 10 (Thread 0x7f88f23b0700 (LWP 3323)):
#0  0x00007f8909a22408 in QMutex::unlock() () at /usr/lib64/libQt5Core.so.5
#1  0x00007f8909c304b5 in  () at /usr/lib64/libQt5Core.so.5
#2  0x00007f8904771661 in g_main_context_check () at /usr/lib64/libglib-2.0.so.0
#3  0x00007f8904771b7b in  () at /usr/lib64/libglib-2.0.so.0
#4  0x00007f8904771cec in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0
#5  0x00007f8909c3004b in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#6  0x00007f8909bdfa6b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#7  0x00007f8909a2577a in QThread::exec() () at /usr/lib64/libQt5Core.so.5
#8  0x00007f890cd06188 in  () at /usr/lib64/libQt5Qml.so.5
#9  0x00007f8909a29fa9 in  () at /usr/lib64/libQt5Core.so.5
#10 0x00007f8908bb10a4 in start_thread () at /lib64/libpthread.so.0
#11 0x00007f89093afcbd in clone () at /lib64/libc.so.6

Thread 9 (Thread 0x7f88ebfff700 (LWP 3324)):
#0  0x00007f89047b3904 in g_mutex_unlock () at /usr/lib64/libglib-2.0.so.0
#1  0x00007f8904771620 in g_main_context_check () at /usr/lib64/libglib-2.0.so.0
#2  0x00007f8904771b7b in  () at /usr/lib64/libglib-2.0.so.0
#3  0x00007f8904771cec in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0
#4  0x00007f8909c3004b in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#5  0x00007f8909bdfa6b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#6  0x00007f8909a2577a in QThread::exec() () at /usr/lib64/libQt5Core.so.5
#7  0x00007f890cd06188 in  () at /usr/lib64/libQt5Qml.so.5
#8  0x00007f8909a29fa9 in  () at /usr/lib64/libQt5Core.so.5
#9  0x00007f8908bb10a4 in start_thread () at /lib64/libpthread.so.0
#10 0x00007f89093afcbd in clone () at /lib64/libc.so.6

Thread 8 (Thread 0x7f88dc486700 (LWP 3380)):
#0  0x00007f89093a788d in poll () at /lib64/libc.so.6
#1  0x00007f8904771be4 in  () at /usr/lib64/libglib-2.0.so.0
#2  0x00007f8904771cec in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0
#3  0x00007f8909c3004b in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#4  0x00007f8909bdfa6b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#5  0x00007f8909a2577a in QThread::exec() () at /usr/lib64/libQt5Core.so.5
#6  0x00007f8909a29fa9 in  () at /usr/lib64/libQt5Core.so.5
#7  0x00007f8908bb10a4 in start_thread () at /lib64/libpthread.so.0
#8  0x00007f89093afcbd in clone () at /lib64/libc.so.6

Thread 7 (Thread 0x7f88dafc5700 (LWP 3389)):
#0  0x00007f8908bb503f in pthread_cond_wait@@GLIBC_2.3.2 () at /lib64/libpthread.so.0
#1  0x00007f890f2c2abb in  () at /usr/lib64/libQt5Script.so.5
#2  0x00007f890f2c2ae9 in  () at /usr/lib64/libQt5Script.so.5
#3  0x00007f8908bb10a4 in start_thread () at /lib64/libpthread.so.0
#4  0x00007f89093afcbd in clone () at /lib64/libc.so.6

Thread 6 (Thread 0x7f884df90700 (LWP 3649)):
#0  0x00007ffc4901bbd1 in  ()
#1  0x0000000000000000 in  ()

Thread 5 (Thread 0x7f8830f0b700 (LWP 3700)):
#0  0x00007f89093a788d in poll () at /lib64/libc.so.6
#1  0x00007f8904771be4 in  () at /usr/lib64/libglib-2.0.so.0
#2  0x00007f8904771cec in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0
#3  0x00007f8909c3004b in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#4  0x00007f8909bdfa6b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#5  0x00007f8909a2577a in QThread::exec() () at /usr/lib64/libQt5Core.so.5
#6  0x00007f8909a29fa9 in  () at /usr/lib64/libQt5Core.so.5
#7  0x00007f8908bb10a4 in start_thread () at /lib64/libpthread.so.0
#8  0x00007f89093afcbd in clone () at /lib64/libc.so.6

Thread 4 (Thread 0x7f882bfff700 (LWP 3702)):
#0  0x00007f89047b3904 in g_mutex_unlock () at /usr/lib64/libglib-2.0.so.0
#1  0x00007f8904771620 in g_main_context_check () at /usr/lib64/libglib-2.0.so.0
#2  0x00007f8904771b7b in  () at /usr/lib64/libglib-2.0.so.0
#3  0x00007f8904771cec in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0
#4  0x00007f8909c3004b in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#5  0x00007f8909bdfa6b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#6  0x00007f8909a2577a in QThread::exec() () at /usr/lib64/libQt5Core.so.5
#7  0x00007f8909a29fa9 in  () at /usr/lib64/libQt5Core.so.5
#8  0x00007f8908bb10a4 in start_thread () at /lib64/libpthread.so.0
#9  0x00007f89093afcbd in clone () at /lib64/libc.so.6

Thread 3 (Thread 0x7f8823bd7700 (LWP 3727)):
#0  0x00007f89093a788d in poll () at /lib64/libc.so.6
#1  0x00007f8904771be4 in  () at /usr/lib64/libglib-2.0.so.0
#2  0x00007f8904771cec in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0
#3  0x00007f8909c3004b in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#4  0x00007f8909bdfa6b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#5  0x00007f8909a2577a in QThread::exec() () at /usr/lib64/libQt5Core.so.5
#6  0x00007f8828ed2db7 in KCupsConnection::run() () at /opt/kf5/lib64/libkcupslib.so
#7  0x00007f8909a29fa9 in  () at /usr/lib64/libQt5Core.so.5
#8  0x00007f8908bb10a4 in start_thread () at /lib64/libpthread.so.0
#9  0x00007f89093afcbd in clone () at /lib64/libc.so.6

Thread 2 (Thread 0x7f87f31c3700 (LWP 3769)):
#0  0x00007f89047b3907 in g_mutex_unlock () at /usr/lib64/libglib-2.0.so.0
#1  0x00007f8904771280 in g_main_context_prepare () at /usr/lib64/libglib-2.0.so.0
#2  0x00007f8904771b03 in  () at /usr/lib64/libglib-2.0.so.0
#3  0x00007f8904771cec in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0
#4  0x00007f8909c3004b in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#5  0x00007f8909bdfa6b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#6  0x00007f8909a2577a in QThread::exec() () at /usr/lib64/libQt5Core.so.5
#7  0x00007f8909a29fa9 in  () at /usr/lib64/libQt5Core.so.5
#8  0x00007f8908bb10a4 in start_thread () at /lib64/libpthread.so.0
#9  0x00007f89093afcbd in clone () at /lib64/libc.so.6

Thread 1 (Thread 0x7f890fbdc7c0 (LWP 3262)):
[KCrash Handler]
#5  0x00007f89036b7434 in KJobWidgets::window(KJob*) () at /usr/lib64/libKF5JobWidgets.so.5
#6  0x00007f8907a64607 in KIO::JobUiDelegate::askFileRename(KJob*, QString const&, QUrl const&, QUrl const&, QFlags<KIO::RenameDialog_Option>, QString&, unsigned long long, unsigned long long, QDateTime const&, QDateTime const&, QDateTime const&, QDateTime const&) () at /usr/lib64/libKF5KIOWidgets.so.5
#7  0x00007f890394400c in  () at /usr/lib64/libKF5KIOCore.so.5
#8  0x00007f8903945042 in KIO::CopyJob::slotResult(KJob*) () at /usr/lib64/libKF5KIOCore.so.5
#9  0x00007f8909c097d5 in QMetaObject::activate(QObject*, int, int, void**) () at /usr/lib64/libQt5Core.so.5
#10 0x00007f890bc59aa2 in KJob::result(KJob*, KJob::QPrivateSignal) () at /usr/lib64/libKF5CoreAddons.so.5
#11 0x00007f890bc5a7cf in KJob::finishJob(bool) () at /usr/lib64/libKF5CoreAddons.so.5
#12 0x00007f8903981062 in KIO::SimpleJob::slotFinished() () at /usr/lib64/libKF5KIOCore.so.5
#13 0x00007f890397fc2b in KIO::SimpleJob::slotError(int, QString const&) () at /usr/lib64/libKF5KIOCore.so.5
#14 0x00007f8909c097d5 in QMetaObject::activate(QObject*, int, int, void**) () at /usr/lib64/libQt5Core.so.5
#15 0x00007f8903963846 in KIO::SlaveInterface::error(int, QString const&) () at /usr/lib64/libKF5KIOCore.so.5
#16 0x00007f8903966667 in KIO::SlaveInterface::dispatch(int, QByteArray const&) () at /usr/lib64/libKF5KIOCore.so.5
#17 0x00007f8903963c58 in KIO::SlaveInterface::dispatch() () at /usr/lib64/libKF5KIOCore.so.5
#18 0x00007f89039680be in KIO::Slave::gotInput() () at /usr/lib64/libKF5KIOCore.so.5
#19 0x00007f89039e6425 in  () at /usr/lib64/libKF5KIOCore.so.5
#20 0x00007f8909c097d5 in QMetaObject::activate(QObject*, int, int, void**) () at /usr/lib64/libQt5Core.so.5
#21 0x00007f8903914da7 in  () at /usr/lib64/libKF5KIOCore.so.5
#22 0x00007f8909c0aee6 in QObject::event(QEvent*) () at /usr/lib64/libQt5Core.so.5
#23 0x00007f890ab6ab6c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib64/libQt5Widgets.so.5
#24 0x00007f890ab71af0 in QApplication::notify(QObject*, QEvent*) () at /usr/lib64/libQt5Widgets.so.5
#25 0x00007f8909be1795 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib64/libQt5Core.so.5
#26 0x00007f8909be37f3 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () at /usr/lib64/libQt5Core.so.5
#27 0x00007f8909c307e3 in  () at /usr/lib64/libQt5Core.so.5
#28 0x00007f8904771a04 in g_main_context_dispatch () at /usr/lib64/libglib-2.0.so.0
#29 0x00007f8904771c48 in  () at /usr/lib64/libglib-2.0.so.0
#30 0x00007f8904771cec in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0
#31 0x00007f8909c3002c in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#32 0x00007f8909bdfa6b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#33 0x00007f8909be7866 in QCoreApplication::exec() () at /usr/lib64/libQt5Core.so.5
#34 0x000000000041c517 in  ()
#35 0x00007f89092ecb05 in __libc_start_main () at /lib64/libc.so.6
#36 0x000000000041c776 in _start ()

Reported using DrKonqi
Comment 1 Fabian Vogt 2016-09-24 08:43:27 UTC
I made a fix for this on https://phabricator.kde.org/D2847 and the reporter confirms that it works.
Comment 2 David Edmundson 2016-09-24 10:25:48 UTC
Git commit c8d3546a9e3ea1dfdb1853a33172824e7ff46feb by David Edmundson, on behalf of Fabian Vogt.
Committed on 24/09/2016 at 10:25.
Pushed by davidedmundson into branch 'Plasma/5.8'.

Set parent for folderview context menu actions

This fixes a crash when a file action opens a window.
Differential Revision: https://phabricator.kde.org/D2848

M  +1    -1    containments/desktop/plugins/folder/foldermodel.cpp

http://commits.kde.org/plasma-desktop/c8d3546a9e3ea1dfdb1853a33172824e7ff46feb