Bug 338643 - Dolphin crashes after trying to create a file in a KIO-mounted zip file
Summary: Dolphin crashes after trying to create a file in a KIO-mounted zip file
Status: RESOLVED FIXED
Alias: None
Product: dolphin
Classification: Applications
Component: general (show other bugs)
Version: 4.13.3
Platform: Kubuntu Linux
: NOR crash
Target Milestone: ---
Assignee: Dolphin Bug Assignee
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2014-08-29 00:14 UTC by Matteo Italia
Modified: 2016-12-26 10:43 UTC (History)
2 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 Matteo Italia 2014-08-29 00:14:44 UTC
Application: dolphin (4.13.3)
KDE Platform Version: 4.13.3
Qt Version: 4.8.6
Operating System: Linux 3.13.0-34-generic x86_64
Distribution: Ubuntu 14.04.1 LTS

-- Information about the crash:
- What I was doing when the application crashed:
I opened a .zip file through the zip:// KIO protocol in Dolphin, then I tried to create a file (right click->create new->Text file). After confirming the new name, a dialog popped up complaining that "writing on tar is not supported" (roughly translated from Italian - notice that the message is still incorrect, I was working on a *zip* file).

After closing that dialog, Dolphin crashed; this is constantly reproducible.

The crash can be reproduced every time.

-- Backtrace:
Application: Dolphin (dolphin), signal: Segmentation fault
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[Current thread is 1 (Thread 0x7f56fd91a7c0 (LWP 7446))]

Thread 4 (Thread 0x7f56e1070700 (LWP 7447)):
#0  0x00007f56fd30dc6d in poll () at ../sysdeps/unix/syscall-template.S:81
#1  0x00007f56f427dfe4 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007f56f427e0ec in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#3  0x00007f56f937d7be in QEventDispatcherGlib::processEvents (this=0x7f56dc0008c0, flags=...) at kernel/qeventdispatcher_glib.cpp:436
#4  0x00007f56f934f0af in QEventLoop::processEvents (this=this@entry=0x7f56e106fde0, flags=...) at kernel/qeventloop.cpp:149
#5  0x00007f56f934f3a5 in QEventLoop::exec (this=this@entry=0x7f56e106fde0, flags=...) at kernel/qeventloop.cpp:204
#6  0x00007f56f924bc5f in QThread::exec (this=this@entry=0x27b8e20) at thread/qthread.cpp:537
#7  0x00007f56f9330823 in QInotifyFileSystemWatcherEngine::run (this=0x27b8e20) at io/qfilesystemwatcher_inotify.cpp:265
#8  0x00007f56f924e32f in QThreadPrivate::start (arg=0x27b8e20) at thread/qthread_unix.cpp:349
#9  0x00007f56f475d182 in start_thread (arg=0x7f56e1070700) at pthread_create.c:312
#10 0x00007f56fd31afbd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111

Thread 3 (Thread 0x7f56dbfff700 (LWP 7448)):
#0  0x00007f56f42bf62a in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#1  0x00007f56f42bf9b9 in g_mutex_unlock () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007f56f427df91 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#3  0x00007f56f427e0ec in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#4  0x00007f56f937d7be in QEventDispatcherGlib::processEvents (this=0x7f56d40008c0, flags=...) at kernel/qeventdispatcher_glib.cpp:436
#5  0x00007f56f934f0af in QEventLoop::processEvents (this=this@entry=0x7f56dbffee20, flags=...) at kernel/qeventloop.cpp:149
#6  0x00007f56f934f3a5 in QEventLoop::exec (this=this@entry=0x7f56dbffee20, flags=...) at kernel/qeventloop.cpp:204
#7  0x00007f56f924bc5f in QThread::exec (this=<optimized out>) at thread/qthread.cpp:537
#8  0x00007f56f924e32f in QThreadPrivate::start (arg=0x2668f20) at thread/qthread_unix.cpp:349
#9  0x00007f56f475d182 in start_thread (arg=0x7f56dbfff700) at pthread_create.c:312
#10 0x00007f56fd31afbd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111

Thread 2 (Thread 0x7f56db7fe700 (LWP 7449)):
#0  0x00007f56f475f569 in __GI___pthread_mutex_lock (mutex=0x7f56cc000a60) at ../nptl/pthread_mutex_lock.c:125
#1  0x00007f56f42bf991 in g_mutex_lock () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007f56f427dfca in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#3  0x00007f56f427e0ec in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#4  0x00007f56f937d7be in QEventDispatcherGlib::processEvents (this=0x7f56cc0008c0, flags=...) at kernel/qeventdispatcher_glib.cpp:436
#5  0x00007f56f934f0af in QEventLoop::processEvents (this=this@entry=0x7f56db7fdde0, flags=...) at kernel/qeventloop.cpp:149
#6  0x00007f56f934f3a5 in QEventLoop::exec (this=this@entry=0x7f56db7fdde0, flags=...) at kernel/qeventloop.cpp:204
#7  0x00007f56f924bc5f in QThread::exec (this=this@entry=0x2840ce0) at thread/qthread.cpp:537
#8  0x00007f56f9330823 in QInotifyFileSystemWatcherEngine::run (this=0x2840ce0) at io/qfilesystemwatcher_inotify.cpp:265
#9  0x00007f56f924e32f in QThreadPrivate::start (arg=0x2840ce0) at thread/qthread_unix.cpp:349
#10 0x00007f56f475d182 in start_thread (arg=0x7f56db7fe700) at pthread_create.c:312
#11 0x00007f56fd31afbd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111

Thread 1 (Thread 0x7f56fd91a7c0 (LWP 7446)):
[KCrash Handler]
#6  detach (this=<optimized out>) at /usr/include/qt4/QtCore/qlist.h:139
#7  begin (this=<optimized out>) at /usr/include/qt4/QtCore/qlist.h:267
#8  KDirListerCache::slotUpdateResult (this=0x27cb330, j=<optimized out>) at ../../kio/kio/kdirlister.cpp:1748
#9  0x00007f56f936487a in QMetaObject::activate (sender=sender@entry=0x31d0510, m=m@entry=0x7f56f9b6a600 <KJob::staticMetaObject>, local_signal_index=local_signal_index@entry=3, argv=argv@entry=0x7fff102deb20) at kernel/qobject.cpp:3539
#10 0x00007f56f97da6d2 in KJob::result (this=this@entry=0x31d0510, _t1=_t1@entry=0x31d0510) at ./kjob.moc:207
#11 0x00007f56f97da710 in KJob::emitResult (this=this@entry=0x31d0510) at ../../kdecore/jobs/kjob.cpp:318
#12 0x00007f56fb1a839a in KIO::SimpleJob::slotFinished (this=this@entry=0x31d0510) at ../../kio/kio/job.cpp:496
#13 0x00007f56fb1ace4e in KIO::ListJob::slotFinished (this=0x31d0510) at ../../kio/kio/job.cpp:2713
#14 0x00007f56f936487a in QMetaObject::activate (sender=0x28b95e0, m=m@entry=0x7f56fb551580 <KIO::SlaveInterface::staticMetaObject>, local_signal_index=local_signal_index@entry=4, argv=argv@entry=0x0) at kernel/qobject.cpp:3539
#15 0x00007f56fb246533 in KIO::SlaveInterface::finished (this=<optimized out>) at ./slaveinterface.moc:184
#16 0x00007f56fb247a76 in KIO::SlaveInterface::dispatch (this=<optimized out>, _cmd=104, rawdata=...) at ../../kio/kio/slaveinterface.cpp:176
#17 0x00007f56fb24556e in KIO::SlaveInterface::dispatch (this=0x28b95e0) at ../../kio/kio/slaveinterface.cpp:92
#18 0x00007f56fb23a1e6 in KIO::Slave::gotInput (this=0x28b95e0) at ../../kio/kio/slave.cpp:344
#19 0x00007f56f936487a in QMetaObject::activate (sender=0x293f8e0, m=m@entry=0x7f56fb54aaa0 <KIO::Connection::staticMetaObject>, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x0) at kernel/qobject.cpp:3539
#20 0x00007f56fb175b40 in KIO::Connection::readyRead (this=<optimized out>) at ./connection.moc:105
#21 0x00007f56fb176231 in KIO::ConnectionPrivate::dequeue (this=0x2da0680) at ../../kio/kio/connection.cpp:82
#22 0x00007f56f9368c1e in QObject::event (this=0x293f8e0, e=<optimized out>) at kernel/qobject.cpp:1194
#23 0x00007f56f9d42e2c in QApplicationPrivate::notify_helper (this=this@entry=0x24d0ef0, receiver=receiver@entry=0x293f8e0, e=e@entry=0x31a8250) at kernel/qapplication.cpp:4567
#24 0x00007f56f9d494a0 in QApplication::notify (this=this@entry=0x7fff102df840, receiver=receiver@entry=0x293f8e0, e=e@entry=0x31a8250) at kernel/qapplication.cpp:4353
#25 0x00007f56faa4dd1a in KApplication::notify (this=0x7fff102df840, receiver=0x293f8e0, event=0x31a8250) at ../../kdeui/kernel/kapplication.cpp:311
#26 0x00007f56f93504dd in QCoreApplication::notifyInternal (this=0x7fff102df840, receiver=receiver@entry=0x293f8e0, event=event@entry=0x31a8250) at kernel/qcoreapplication.cpp:953
#27 0x00007f56f9353b3d in sendEvent (event=0x31a8250, receiver=0x293f8e0) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:231
#28 QCoreApplicationPrivate::sendPostedEvents (receiver=receiver@entry=0x0, event_type=event_type@entry=0, data=0x248b460) at kernel/qcoreapplication.cpp:1577
#29 0x00007f56f9353fe3 in QCoreApplication::sendPostedEvents (receiver=receiver@entry=0x0, event_type=event_type@entry=0) at kernel/qcoreapplication.cpp:1470
#30 0x00007f56f937df83 in sendPostedEvents () at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:236
#31 postEventSourceDispatch (s=0x24d12e0) at kernel/qeventdispatcher_glib.cpp:287
#32 0x00007f56f427de04 in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#33 0x00007f56f427e048 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#34 0x00007f56f427e0ec in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#35 0x00007f56f937d7a1 in QEventDispatcherGlib::processEvents (this=0x248cd40, flags=...) at kernel/qeventdispatcher_glib.cpp:434
#36 0x00007f56f9de4bb6 in QGuiEventDispatcherGlib::processEvents (this=<optimized out>, flags=...) at kernel/qguieventdispatcher_glib.cpp:204
#37 0x00007f56f934f0af in QEventLoop::processEvents (this=this@entry=0x7fff102df710, flags=...) at kernel/qeventloop.cpp:149
#38 0x00007f56f934f3a5 in QEventLoop::exec (this=this@entry=0x7fff102df710, flags=...) at kernel/qeventloop.cpp:204
#39 0x00007f56f9354b79 in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1225
#40 0x00007f56fd6365e7 in kdemain () from /usr/lib/kde4/libkdeinit/libkdeinit4_dolphin.so
#41 0x00007f56fd241ec5 in __libc_start_main (main=0x4006d0, argc=6, argv=0x7fff102df978, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fff102df968) at libc-start.c:287
#42 0x00000000004006fe in _start ()

Possible duplicates by query: bug 335827, bug 334342, bug 333840, bug 332966, bug 331741.
Comment 1 Kevin Krammer 2014-08-29 07:35:13 UTC
I can confirm the wrong error message, i.e. saying "tar" instead of "zip".
But Doplhin does not crash for me, same versions, but on Debian/SID.

Interestingly attempting to create a file results in an error message box, while attempting to create a new directory results in an error in a KMessageWidget between path and main view.
Comment 2 Matteo Italia 2014-08-29 07:50:43 UTC
I tried again on another Kubuntu 14.04 machine (your comment made me suspect that it was a machine-specific issue), but I can reproduce it consistently.

In the process I discovered another bizarre fact: if I jump to the zip-URL in an already existing Dolphin window, the directory is treated as read-only (the "Create" commands are disabled); this is not the case if I start dolphin passing the path as command line argument.
Comment 3 Kevin Krammer 2014-08-29 08:09:02 UTC
As a data point: I also did not enter the ZIP URI manually, but used
kioclient exec zip-uri
Comment 4 Frank Reininghaus 2014-08-31 21:51:05 UTC
Thanks for the bug report. From my point of view, the actual bug (and the only issue that might be due to a bug in Dolphin itself, and not in kdelibs) is that the "Create New..." menu is enabled at all - AFAIK, the archive kioslaves do not support writing. The "zip vs. tar" confusion is most likely not Dolphin's fault (note that the error message comes from KIO).

The crash backtrace looks like many others that have been reported - most probably a KIO issue.

(In reply to Kevin Krammer from comment #1)
> Interestingly attempting to create a file results in an error message box,
> while attempting to create a new directory results in an error in a
> KMessageWidget between path and main view.

The origin of this difference is most likely inside the "Create New..." menu or some other kdelibs code that it uses.
Comment 5 Matteo Italia 2014-08-31 21:57:17 UTC
There's surely an UI bug that depends on how Dolphin was started - as said above, if the URI is entered directly in the address bar, Dolphin correctly understands that the path is read-only and disables all the write-related stuff, it's only starting Dolphin ex-novo that yields this problem.

OTOH, it should probably be investigated whether, besides the UI bug, Dolphin fails to handle the KIO error (and crashes in its code), or if the crash happens directly inside KIO.
Comment 6 Frank Reininghaus 2014-09-01 11:24:02 UTC
(In reply to Matteo Italia from comment #5)
> OTOH, it should probably be investigated whether, besides the UI bug,
> Dolphin fails to handle the KIO error (and crashes in its code), or if the
> crash happens directly inside KIO.

This has already been investigated. Your backtrace clearly shows that the crash occurs inside KIO.
Comment 7 Elvis Angelaccio 2016-12-26 10:43:29 UTC
"Create New" is no longer enabled on zip:// or tar:// urls, closing.