For a long time there has been a really annoying crash in all KDE applications. For example: You will just copy/paste a file in dolphin file browser. “Save as” in Okular - Universal Document Viewer. I found out it's in FileProtocol::copy / KIO::copy and I wrote a simple test to reproduce the crash: ``` KIOFileCopy::KIOFileCopy() { QList<QUrl> sourceUrl = { QUrl::fromLocalFile(QLatin1String("/home/rsadowski/src/kio_file_copy/build/bin/fileA.txt")) }; const QUrl destinationUrl = QUrl::fromLocalFile(QLatin1String("/home/rsadowski/src/kio_file_copy/build/bin/fileB.txt")); KIO::CopyJob* job = KIO::copy(sourceUrl, destinationUrl, KIO::DefaultFlags ); } ``` Debug output: ``` # ./kio_file_copy QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-rsadowski' kf.crash: Could not find drkonqi in search paths: ("/home/rsadowski/src/kio_file_copy/build/bin", "/usr/local/lib/qt5/libexec", "/usr/local/libexec") kf.kio.core.copyjob: (QUrl("file:///home/rsadowski/src/kio_file_copy/build/bin/fileA.txt")) QUrl("file:///home/rsadowski/src/kio_file_copy/build/bin/fileB.txt") kf.kio.widgets: Failed to check which JobView API is supported "The name org.kde.kuiserver was not provided by any .service files" kf.coreaddons: Checking for plugins in ("/home/rsadowski/src/kio_file_copy/build/bin/kf5/kio", "/usr/local/lib/qt5/plugins/kf5/kio") kf.kio.core: "/usr/local/lib/qt5/plugins/kf5/kio/kio_file.so" supports protocols ("file") kf.kio.core: "/usr/local/lib/qt5/plugins/kf5/kio/kio_ftp.so" supports protocols ("ftp") kf.kio.core: "/usr/local/lib/qt5/plugins/kf5/kio/kio_ghelp.so" supports protocols ("ghelp") kf.kio.core: "/usr/local/lib/qt5/plugins/kf5/kio/kio_help.so" supports protocols ("help") kf.kio.core: "/usr/local/lib/qt5/plugins/kf5/kio/kio_http.so" supports protocols ("http", "https", "webdav", "webdavs") kf.kio.core: "/usr/local/lib/qt5/plugins/kf5/kio/kio_remote.so" supports protocols ("remote") kf.kio.core: "/usr/local/lib/qt5/plugins/kf5/kio/kio_trash.so" supports protocols ("trash") kf.kio.core: "/usr/local/lib/qt5/plugins/kf5/kio/ldap.so" supports protocols ("ldap", "ldaps") kf.kio.core: "/usr/local/lib/qt5/plugins/kf5/kio/akonadi.so" supports protocols ("akonadi") kf.kio.core: "/usr/local/lib/qt5/plugins/kf5/kio/kio_msits.so" supports protocols ("ms-its") kf.kio.core: "/usr/local/lib/qt5/plugins/kf5/kio/baloosearch.so" supports protocols ("baloosearch") kf.kio.core: "/usr/local/lib/qt5/plugins/kf5/kio/tags.so" supports protocols ("tags") kf.kio.core: "/usr/local/lib/qt5/plugins/kf5/kio/timeline.so" supports protocols ("timeline") kf.kio.core: "/usr/local/lib/qt5/plugins/kf5/kio/about.so" supports protocols ("about") kf.kio.core: "/usr/local/lib/qt5/plugins/kf5/kio/activities.so" supports protocols ("activities") kf.kio.core: "/usr/local/lib/qt5/plugins/kf5/kio/archive.so" supports protocols ("ar", "sevenz", "tar", "zip") kf.kio.core: "/usr/local/lib/qt5/plugins/kf5/kio/bookmarks.so" supports protocols ("bookmarks") kf.kio.core: "/usr/local/lib/qt5/plugins/kf5/kio/filter.so" supports protocols ("bzip", "bzip2", "gzip", "lzma", "xz", "zstd") kf.kio.core: "/usr/local/lib/qt5/plugins/kf5/kio/fish.so" supports protocols ("fish") kf.kio.core: "/usr/local/lib/qt5/plugins/kf5/kio/info.so" supports protocols ("info") kf.kio.core: "/usr/local/lib/qt5/plugins/kf5/kio/kio_filenamesearch.so" supports protocols ("filenamesearch") kf.kio.core: "/usr/local/lib/qt5/plugins/kf5/kio/man.so" supports protocols ("man") kf.kio.core: "/usr/local/lib/qt5/plugins/kf5/kio/mtp.so" supports protocols ("mtp") kf.kio.core: "/usr/local/lib/qt5/plugins/kf5/kio/recentdocuments.so" supports protocols ("recentdocuments") kf.kio.core: "/usr/local/lib/qt5/plugins/kf5/kio/recentlyused.so" supports protocols ("recentlyused") kf.kio.core: "/usr/local/lib/qt5/plugins/kf5/kio/sftp.so" supports protocols ("sftp") kf.kio.core: "/usr/local/lib/qt5/plugins/kf5/kio/smb.so" supports protocols ("cifs", "smb") kf.kio.core: "/usr/local/lib/qt5/plugins/kf5/kio/thumbnail.so" supports protocols ("thumbnail") kf.kio.core.copyjob: CopyJob: stating the dest QUrl("file:///home/rsadowski/src/kio_file_copy/build/bin/fileB.txt") QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-rsadowski' kf.kio.core: 0xad7a97c3040 Creating threaded worker kf.kio.core.copyjob: d->state= 1 kf.kio.core.copyjob: kf.kio.core.copyjob: dest is dir: false kf.kio.core.copyjob: KIO::stat on QUrl("file:///home/rsadowski/src/kio_file_copy/build/bin/fileA.txt") kf.kio.core.copyjob: d->state= 1 kf.kio.core.copyjob: kf.kio.core.copyjob: fileName= "fileA.txt" url= QUrl("file:///home/rsadowski/src/kio_file_copy/build/bin/fileA.txt") kf.kio.core.copyjob: uSource= QUrl("file:///home/rsadowski/src/kio_file_copy/build/bin/fileA.txt") uDest(1)= QUrl("file:///home/rsadowski/src/kio_file_copy/build/bin/fileB.txt") kf.kio.core.copyjob: uDest(2)= QUrl("file:///home/rsadowski/src/kio_file_copy/build/bin/fileB.txt") kf.kio.core.copyjob: QUrl("file:///home/rsadowski/src/kio_file_copy/build/bin/fileA.txt") -> QUrl("file:///home/rsadowski/src/kio_file_copy/build/bin/fileB.txt") kf.kio.core.copyjob: Source is a file (or a symlink), or we are linking -> no recursive listing kf.kio.core.copyjob: Setting m_dest to QUrl("file:///home/rsadowski/src/kio_file_copy/build/bin/fileB.txt") kf.kio.core.copyjob: Stating finished. To copy: 7 , available: 30130962432 kf.kio.core.copyjob: kf.kio.core.copyjob: preparing to copy QUrl("file:///home/rsadowski/src/kio_file_copy/build/bin/fileA.txt") 7 30130962432 kf.kio.core.copyjob: copying "/home/rsadowski/src/kio_file_copy/build/bin/fileB.txt" kf.kio.core.copyjob: Copying QUrl("file:///home/rsadowski/src/kio_file_copy/build/bin/fileA.txt") to QUrl("file:///home/rsadowski/src/kio_file_copy/build/bin/fileB.txt") zsh: segmentation fault (core dumped) ./kio_file_copy ``` The trace: ``` Program terminated with signal SIGSEGV, Segmentation fault. #0 FileProtocol::copy (this=0xad760fd3980, srcUrl=..., destUrl=..., _mode=420, _flags=...) at /usr/ports/pobj/kio-5.101.0/kio-5.101.0/src/ioslaves/file/file_unix.cpp:678 678 if (privilegeOperationUnitTestMode()) { [Current thread is 1 (process 431561)] (gdb) bt #0 FileProtocol::copy (this=0xad760fd3980, srcUrl=..., destUrl=..., _mode=420, _flags=...) at /usr/ports/pobj/kio-5.101.0/kio-5.101.0/src/ioslaves/file/file_unix.cpp:678 #1 0x00000ad7d832dd53 in KIO::SlaveBase::dispatch (this=0xad760fd3990, command=<optimized out>, data=...) at /usr/ports/pobj/kio-5.101.0/kio-5.101.0/src/core/slavebase.cpp:1364 #2 0x00000ad7d8327d05 in KIO::SlaveBase::dispatchLoop (this=0xad760fd3990) at /usr/ports/pobj/kio-5.101.0/kio-5.101.0/src/core/slavebase.cpp:339 #3 0x00000ad7d83bf803 in KIO::WorkerThread::run (this=0xad79475cf40) at /usr/ports/pobj/kio-5.101.0/kio-5.101.0/src/core/workerthread.cpp:62 #4 0x00000ad75255e28c in QThreadPrivate::start(void*) () from /usr/local/lib/qt5/./libQt5Core.so.4.0 #5 0x00000ad8015b9a11 in _rthread_start (v=<optimized out>) at /usr/src/lib/librthread/rthread.c:96 #6 0x00000ad81d6f9ada in __tfork_thread () at /usr/src/lib/libc/arch/amd64/sys/tfork_thread.S:84 ``` Unfortunately I don't make any progress when debugging and would appreciate any ideas. SOFTWARE/OS VERSIONS OpenBSD KDE Frameworks Version: 5.101.0 Qt Version: Qt 5.15.7 ADDITIONAL INFORMATION
This issue can be fixed by disabling threaded kio_copy. https://github.com/openbsd/ports/blob/master/devel/kf5/kio/patches/patch-src_core_slave_cpp
I am sorry KIO 5 won't receive any new releases. Also the latest `5.115.0` might have this issue. This shouldn't be reproducible with KF6 / plasma6 for when you will be able to upgrade. > This issue can be fixed by disabling threaded kio_copy. It is the whole `file://` protocol that runs in a thread instead of a process.
> I am sorry KIO 5 won't receive any new releases. that is not correct. There will be future KF5 releases, just not as frequent as before