Dolphin loads CPU during idle when /tmp directory tab is open. 25.08.2 -- 1%-4% load cpu 25.08.0 -- 5%-10% load cpu 25.04.3 -- 0% load cpu
Most of the load comes from #0 KIO::listDir (url=..., flags=..., listFlags=...) at /home/me/src/kio/src/core/listjob.cpp:241 #1 0x00007f853ffd6ef6 in KCoreDirListerCache::updateDirectory (this=0x558f86925390, _dir=...) at /home/me/src/kio/src/core/kcoredirlister.cpp:651 #2 0x00007f853ffce2dd in KCoreDirListerCache::processPendingUpdates (this=0x558f86925390) at /home/me/src/kio/src/core/kcoredirlister.cpp:2032 #3 0x00007f8540000e91 in QtPrivate::FunctorCall<std::integer_sequence<unsigned long>, QtPrivate::List<>, void, void (KCoreDirListerCache::*)()>::call(void (KCoreDirListerCache::*)(), KCoreDirListerCache*, void**)::{lambda()#1}::operator()() const (this=0x7fffa75a25b0) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:127 #4 0x00007f8540000dc9 in QtPrivate::FunctorCallBase::call_internal<void, QtPrivate::FunctorCall<std::integer_sequence<unsigned long>, QtPrivate::List<>, void, void (KCoreDirListerCache::*)()>::call(void (KCoreDirListerCache::*)(), KCoreDirListerCache*, void**)::{lambda()#1}>(void**, QtPrivate::FunctorCall<std::integer_sequence<unsigned long>, QtPrivate::List<>, void, void (KCoreDirListerCache::*)()>::call(void (KCoreDirListerCache::*)(), KCoreDirListerCache*, void**)::{lambda()#1}&&) (args=0x7fffa75a27b0, fn=...) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:65 #5 0x00007f8540000cfb in QtPrivate::FunctorCall<std::integer_sequence<unsigned long>, QtPrivate::List<>, void, void (KCoreDirListerCache::*)()>::call(void (KCoreDirListerCache::*)(), KCoreDirListerCache*, void**) (f=(void (KCoreDirListerCache::*)(KCoreDirListerCache * const)) 0x7f853ffcde90 <KCoreDirListerCache::processPendingUpdates()>, o=0x558f86925390, arg=0x7fffa75a27b0) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:126 #6 0x00007f8540000c7d in QtPrivate::FunctionPointer<void (KCoreDirListerCache::*)()>::call<QtPrivate::List<>, void>(void (KCoreDirListerCache::*)(), KCoreDirListerCache*, void**) (f=(void (KCoreDirListerCache::*)(KCoreDirListerCache * const)) 0x7f853ffcde90 <KCoreDirListerCache::processPendingUpdates()>, o=0x558f86925390, arg=0x7fffa75a27b0) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:174 #7 0x00007f8540000ba6 in QtPrivate::QCallableObject<void (KCoreDirListerCache::*)(), QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) (which=1, this_=0x558f86925090, r=0x558f86925390, a=0x7fffa75a27b0, ret=0x0) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:545 #8 0x00007f853dcbb66f in QtPrivate::QSlotObjectBase::call (this=0x558f86925090, r=0x558f86925390, a=0x7fffa75a27b0, this=<optimized out>, r=<optimized out>, a=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qobjectdefs_impl.h:461 #9 doActivate<false> (sender=<optimized out>, signal_index=<optimized out>, argv=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qobject.cpp:4157 #10 0x00007f853dcc893f in QMetaObject::activate<void, QTimer::QPrivateSignal> (sender=<optimized out>, mo=<optimized out>, local_signal_index=0, ret=0x0) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qobjectdefs.h:306 #11 QTimer::timeout (this=<optimized out>, _t1=...) at /usr/src/debug/qt6-base/build/src/corelib/Core_autogen/include/moc_qtimer.cpp:182 #12 QTimer::timerEvent (e=<optimized out>, this=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qtimer.cpp:286 #13 QTimer::timerEvent (this=<optimized out>, e=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qtimer.cpp:280 #14 0x00007f853dca8a16 in QObject::event (this=<optimized out>, e=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qobject.cpp:1407 #15 0x00007f853ebc9dd0 in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x558f869254b0, e=0x7fffa75a2950) at /usr/src/debug/qt6-base/qtbase/src/widgets/kernel/qapplication.cpp:3300 #16 0x00007f853dc4f678 in QCoreApplication::notifyInternal2 (receiver=0x558f869254b0, event=0x7fffa75a2950) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qcoreapplication.cpp:1106 #17 0x00007f853de04eaf in QCoreApplication::sendEvent (receiver=<optimized out>, event=0x7fffa75a2950) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qcoreapplication.cpp:1546 #18 QTimerInfoList::activateTimers (this=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qtimerinfo_unix.cpp:426 #19 0x00007f853df2a779 in timerSourceDispatch (source=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qeventdispatcher_glib.cpp:152 #20 0x00007f853b0d2f4d in g_main_dispatch (context=0x7f8530000f50) at ../glib/glib/gmain.c:3565 #21 0x00007f853b0d4617 in g_main_context_dispatch_unlocked (context=0x7f8530000f50) at ../glib/glib/gmain.c:4425 #22 g_main_context_iterate_unlocked (context=context@entry=0x7f8530000f50, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/glib/gmain.c:4490 #23 0x00007f853b0d4825 in g_main_context_iteration (context=0x7f8530000f50, may_block=1) at ../glib/glib/gmain.c:4556 #24 0x00007f853df26fe2 in QEventDispatcherGlib::processEvents (this=0x558f86410820, flags=...) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qeventdispatcher_glib.cpp:399 #25 0x00007f853dc5bca6 in QEventLoop::processEvents (this=0x7fffa75a2c20, flags=...) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qeventloop.cpp:104 #26 QEventLoop::exec (this=0x7fffa75a2c20, flags=...) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qeventloop.cpp:186 #27 0x00007f853dc53d21 in QCoreApplication::exec () at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qcoreapplication.cpp:1449 #28 0x0000558f47588d90 in ??? () #29 0x00007f853d665675 in __libc_start_call_main (main=main@entry=0x558f47586b90, argc=argc@entry=1, argv=argv@entry=0x7fffa75a30d8) at ../sysdeps/nptl/libc_start_call_main.h:58 #30 0x00007f853d665729 in __libc_start_main_impl (main=0x558f47586b90, argc=1, argv=0x7fffa75a30d8, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffa75a30c8) at ../csu/libc-start.c:360 #31 0x0000558f47589eb5 in ??? () Is causing listing #0 statx (fd=-100, path=0x7f84dc013300 "/tmp/.", flags=256, mask=2681, buf=0x7f84eda37338) at ../sysdeps/unix/sysv/linux/statx.c:27 #1 0x00007f850e6976c7 in LSTAT (path=0x7f84dc013300 "/tmp/.", buff=0x7f84eda37338, details=...) at /home/me/src/kio/src/kioworkers/file/stat_unix.h:46 #2 0x00007f850e694419 in createUDSEntry (filename=..., path=..., entry=..., details=..., fullPath=...) at /home/me/src/kio/src/kioworkers/file/file_unix.cpp:176 #3 0x00007f850e693d15 in FileProtocol::listDir (this=0x7f84dc011670, url=...) at /home/me/src/kio/src/kioworkers/file/file_unix.cpp:827 #4 0x00007f850e694c2c in non-virtual thunk to FileProtocol::listDir(QUrl const&) () at /usr/lib/qt6/plugins/kf6/kio/kio_file.so #5 0x00007f853ff31b71 in KIO::WorkerSlaveBaseBridge::listDir (this=0x7f84dc007840, url=...) at /home/me/src/kio/src/core/workerbase_p.h:121 #6 0x00007f853ff28428 in KIO::SlaveBase::dispatch (this=0x7f84dc007840, command=71, data=...) at /home/me/src/kio/src/core/slavebase.cpp:1177 #7 0x00007f853ff23671 in KIO::SlaveBase::dispatchLoop (this=0x7f84dc007840) at /home/me/src/kio/src/core/slavebase.cpp:330 #8 0x00007f854003ed47 in KIO::WorkerThread::run (this=0x558f8709d550) at /home/me/src/kio/src/core/workerthread.cpp:47 #9 0x00007f853de07e92 in operator() (__closure=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/thread/qthread_unix.cpp:434 #10 (anonymous namespace)::terminate_on_exception<QThreadPrivate::start(void*)::<lambda()> > (t=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/thread/qthread_unix.cpp:366 #11 QThreadPrivate::start (arg=0x558f8709d550) at /usr/src/debug/qt6-base/qtbase/src/corelib/thread/qthread_unix.cpp:394 #12 0x00007f853d6d49cb in start_thread (arg=<optimized out>) at pthread_create.c:448 #13 0x00007f853d758a0c in __GI___clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:78 Is causing a tempfile creation #0 QTemporaryFile::QTemporaryFile (this=0x558f86a29120, this=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/io/qtemporaryfile.cpp:650 #1 0x00007f8540a011bf in ViewProperties::loadProperties(QString const&) const () at /usr/lib/libdolphinprivate.so.6 #2 0x00007f8540a02b0d in ViewProperties::ViewProperties(QUrl const&) () at /usr/lib/libdolphinprivate.so.6 #3 0x00007f85409eac83 in DolphinView::applyDynamicView() () at /usr/lib/libdolphinprivate.so.6 #4 0x00007f85409eb022 in DolphinView::slotDirectoryLoadingCompleted() () at /usr/lib/libdolphinprivate.so.6 #5 0x00007f853dcbb66f in QtPrivate::QSlotObjectBase::call (this=0x558f86e85350, r=0x558f86df28e0, a=0x7fffa75a1288, this=<optimized out>, r=<optimized out>, a=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qobjectdefs_impl.h:461 #6 doActivate<false> (sender=<optimized out>, signal_index=<optimized out>, argv=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qobject.cpp:4157 #7 0x00007f853dcbb66f in QtPrivate::QSlotObjectBase::call (this=0x558f86dfd140, r=0x558f86df3150, a=0x7fffa75a13e0, this=<optimized out>, r=<optimized out>, a=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qobjectdefs_impl.h:461 #8 doActivate<false> (sender=<optimized out>, signal_index=<optimized out>, argv=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qobject.cpp:4157 #9 0x00007f853ff2048c in QMetaObject::activate<void, QUrl> (sender=0x558f86df6d30, mo=0x7f854013dfa0 <KCoreDirLister::staticMetaObject>, local_signal_index=2, ret=0x0, args=...) at /usr/include/qt6/QtCore/qobjectdefs.h:306 #10 0x00007f853ffd648d in KCoreDirLister::listingDirCompleted (this=0x558f86df6d30, _t1=...) at src/core/KF6KIOCore_autogen/include/moc_kcoredirlister.cpp:346 #11 0x00007f853ffda5ab in KCoreDirListerCache::slotUpdateResult (this=0x558f86925390, j=0x558f870920e0) at /home/me/src/kio/src/core/kcoredirlister.cpp:1844 #12 0x00007f8540009a37 in QtPrivate::FunctorCall<std::integer_sequence<unsigned long, 0ul>, QtPrivate::List<KJob*>, void, void (KCoreDirListerCache::*)(KJob*)>::call(void (KCoreDirListerCache::*)(KJob*), KCoreDirListerCache*, void**)::{lambda()#1}::operator()() const (this=0x7fffa75a1a10) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:127 #13 0x00007f85400099b9 in QtPrivate::FunctorCallBase::call_internal<void, QtPrivate::FunctorCall<std::integer_sequence<unsigned long, 0ul>, QtPrivate::List<KJob*>, void, void (KCoreDirListerCache::*)(KJob*)>::call(void (KCoreDirListerCache::*)(KJob*), KCoreDirListerCache*, void**)::{lambda()#1}>(void**, QtPrivate::FunctorCall<std::integer_sequence<unsigned long, 0ul>, QtPrivate::List<KJob*>, void, void (KCoreDirListerCache::*)(KJob*)>::call(void (KCoreDirListerCache::*)(KJob*), KCoreDirListerCache*, void**)::{lambda()#1}&&) (args=0x7fffa75a1c40, fn=...) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:65 #14 0x00007f8540009983 in QtPrivate::FunctorCall<std::integer_sequence<unsigned long, 0ul>, QtPrivate::List<KJob*>, void, void (KCoreDirListerCache::*)(KJob*)>::call (f=(void (KCoreDirListerCache::*)(KCoreDirListerCache * const, KJob *)) 0x7f853ffd9350 <KCoreDirListerCache::slotUpdateResult(KJob*)>, o=0x558f86925390, arg=0x7fffa75a1c40) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:126 #15 0x00007f85400098fd in QtPrivate::FunctionPointer<void (KCoreDirListerCache::*)(KJob*)>::call<QtPrivate::List<KJob*>, void> (f=(void (KCoreDirListerCache::*)(KCoreDirListerCache * const, KJob *)) 0x7f853ffd9350 <KCoreDirListerCache::slotUpdateResult(KJob*)>, o=0x558f86925390, arg=0x7fffa75a1c40) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:174 #16 0x00007f8540009826 in QtPrivate::QCallableObject<void (KCoreDirListerCache::*)(KJob*), QtPrivate::List<KJob*>, void>::impl (which=1, this_=0x558f87256170, r=0x558f86925390, a=0x7fffa75a1c40, ret=0x0) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:545 #17 0x00007f853dcbb66f in QtPrivate::QSlotObjectBase::call (this=0x558f87256170, r=0x558f86925390, a=0x7fffa75a1c40, this=<optimized out>, r=<optimized out>, a=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qobjectdefs_impl.h:461 #18 doActivate<false> (sender=<optimized out>, signal_index=<optimized out>, argv=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qobject.cpp:4157 #19 0x00007f853f422646 in QMetaObject::activate<void, KJob*, KJob::QPrivateSignal> (sender=0x558f870920e0, mo=0x7f853f510040 <KJob::staticMetaObject>, local_signal_index=3, ret=0x0) at /usr/include/qt6/QtCore/qobjectdefs.h:306 #20 0x00007f853f420633 in KJob::result (this=0x558f870920e0, _t1=0x558f870920e0, _t2=...) at /home/me/src/kcoreaddons/build/src/lib/KF6CoreAddons_autogen/include/moc_kjob.cpp:475 #21 0x00007f853f41dd7b in KJob::finishJob (this=0x558f870920e0, emitResult=true) at /home/me/src/kcoreaddons/src/lib/jobs/kjob.cpp:115 #22 0x00007f853f41ec65 in KJob::emitResult (this=0x558f870920e0) at /home/me/src/kcoreaddons/src/lib/jobs/kjob.cpp:360 #23 0x00007f853ff677a1 in KIO::SimpleJob::slotFinished (this=0x558f870920e0) at /home/me/src/kio/src/core/simplejob.cpp:225 #24 0x00007f853ff5e273 in KIO::ListJob::slotFinished (this=0x558f870920e0) at /home/me/src/kio/src/core/listjob.cpp:236 #25 0x00007f853ff6ae61 in QtPrivate::FunctorCall<std::integer_sequence<unsigned long>, QtPrivate::List<>, void, void (KIO::SimpleJob::*)()>::call(void (KIO::SimpleJob::*)(), KIO::SimpleJob*, void**)::{lambda()#1}::operator()() const (this=0x7fffa75a1ee0) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:127 #26 0x00007f853ff6ad99 in QtPrivate::FunctorCallBase::call_internal<void, QtPrivate::FunctorCall<std::integer_sequence<unsigned long>, QtPrivate::List<>, void, void (KIO::SimpleJob::*)()>::call(void (KIO::SimpleJob::*)(), KIO::SimpleJob*, void**)::{lambda()#1}>(void**, QtPrivate::FunctorCall<std::integer_sequence<unsigned long>, QtPrivate::List<>, void, void (KIO::SimpleJob::*)()>::call(void (KIO::SimpleJob::*)(), KIO::SimpleJob*, void**)::{lambda()#1}&&) (args=0x7fffa75a2058, fn=...) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:65 #27 0x00007f853ff6accb in QtPrivate::FunctorCall<std::integer_sequence<unsigned long>, QtPrivate::List<>, void, void (KIO::SimpleJob::*)()>::call(void (KIO::SimpleJob::*)(), KIO::SimpleJob*, void**) (f=&virtual KIO::SimpleJob::slotFinished(), o=0x558f870920e0, arg=0x7fffa75a2058) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:126 #28 0x00007f853ff6ac4d in QtPrivate::FunctionPointer<void (KIO::SimpleJob::*)()>::call<QtPrivate::List<>, void>(void (KIO::SimpleJob::*)(), KIO::SimpleJob*, void**) (f=&virtual KIO::SimpleJob::slotFinished(), o=0x558f870920e0, arg=0x7fffa75a2058) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:174 #29 0x00007f853ff6ab76 in QtPrivate::QCallableObject<void (KIO::SimpleJob::*)(), QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) (which=1, this_=0x558f87444280, r=0x558f870920e0, a=0x7fffa75a2058, ret=0x0) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:545 #30 0x00007f853dcbb66f in QtPrivate::QSlotObjectBase::call (this=0x558f87444280, r=0x558f870920e0, a=0x7fffa75a2058, this=<optimized out>, r=<optimized out>, a=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qobjectdefs_impl.h:461 #31 doActivate<false> (sender=<optimized out>, signal_index=<optimized out>, argv=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qobject.cpp:4157 #32 0x00007f8540035015 in KIO::WorkerInterface::finished (this=0x558f870a1280) at src/core/KF6KIOCore_autogen/include/moc_workerinterface_p.cpp:318 #33 0x00007f85400347b6 in KIO::WorkerInterface::dispatch (this=0x558f870a1280, _cmd=104, rawdata=...) at /home/me/src/kio/src/core/workerinterface.cpp:125 #34 0x00007f8540034627 in KIO::WorkerInterface::dispatch (this=0x558f870a1280) at /home/me/src/kio/src/core/workerinterface.cpp:57 #35 0x00007f854002f872 in KIO::Worker::gotInput (this=0x558f870a1280) at /home/me/src/kio/src/core/worker.cpp:262 #36 0x00007f8540033b71 in QtPrivate::FunctorCall<std::integer_sequence<unsigned long>, QtPrivate::List<>, void, void (KIO::Worker::*)()>::call(void (KIO::Worker::*)(), KIO::Worker*, void**)::{lambda()#1}::operator()() const (this=0x7fffa75a2460) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:127 #37 0x00007f8540033aa9 in QtPrivate::FunctorCallBase::call_internal<void, QtPrivate::FunctorCall<std::integer_sequence<unsigned long>, QtPrivate::List<>, void, void (KIO::Worker::*)()>::call(void (KIO::Worker::*)(), KIO::Worker*, void**)::{lambda()#1}>(void**, QtPrivate::FunctorCall<std::integer_sequence<unsigned long>, QtPrivate::List<>, void, void (KIO::Worker::*)()>::call(void (KIO::Worker::*)(), KIO::Worker*, void**)::{lambda()#1}&&) (args=0x7fffa75a25d8, fn=...) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:65 #38 0x00007f85400339db in QtPrivate::FunctorCall<std::integer_sequence<unsigned long>, QtPrivate::List<>, void, void (KIO::Worker::*)()>::call(void (KIO::Worker::*)(), KIO::Worker*, void**) (f=(void (KIO::Worker::*)(KIO::Worker * const)) 0x7f854002f830 <KIO::Worker::gotInput()>, o=0x558f870a1280, arg=0x7fffa75a25d8) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:126 #39 0x00007f854003395d in QtPrivate::FunctionPointer<void (KIO::Worker::*)()>::call<QtPrivate::List<>, void>(void (KIO::Worker::*)(), KIO::Worker*, void**) (f=(void (KIO::Worker::*)(KIO::Worker * const)) 0x7f854002f830 <KIO::Worker::gotInput()>, o=0x558f870a1280, arg=0x7fffa75a25d8) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:174 #40 0x00007f8540033886 in QtPrivate::QCallableObject<void (KIO::Worker::*)(), QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) (which=1, this_=0x558f86b80820, r=0x558f870a1280, a=0x7fffa75a25d8, ret=0x0) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:545 #41 0x00007f853dcbb66f in QtPrivate::QSlotObjectBase::call (this=0x558f86b80820, r=0x558f870a1280, a=0x7fffa75a25d8, this=<optimized out>, r=<optimized out>, a=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qobjectdefs_impl.h:461 #42 doActivate<false> (sender=<optimized out>, signal_index=<optimized out>, argv=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qobject.cpp:4157 #43 0x00007f853fe8edc2 in KIO::Connection::readyRead (this=0x558f86eea600) at src/core/KF6KIOCore_autogen/include/moc_connection_p.cpp:116 #44 0x00007f853fe8eb11 in KIO::ConnectionPrivate::dequeue (this=0x558f872c4fb0) at /home/me/src/kio/src/core/connection.cpp:32 #45 0x00007f853fe910e4 in KIO::Connection::read(int*, QByteArray&)::$_0::operator()() const (this=0x558f870ee300) at /home/me/src/kio/src/core/connection.cpp:236 #46 0x00007f853fe910b8 in QtPrivate::FunctorCall<std::integer_sequence<unsigned long>, QtPrivate::List<>, void, KIO::Connection::read(int*, QByteArray&)::$_0>::call(KIO::Connection::read(int*, QByteArray&)::$_0&, void**)::{lambda()#1}::operator()() const (this=0x7fffa75a2710) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:116 #47 0x00007f853fe91099 in QtPrivate::FunctorCallBase::call_internal<void, QtPrivate::FunctorCall<std::integer_sequence<unsigned long>, QtPrivate::List<>, void, KIO::Connection::read(int*, QByteArray&)::$_0>::call(KIO::Connection::read(int*, QByteArray&)::$_0&, void**)::{lambda()#1}>(void**, QtPrivate::FunctorCall<std::integer_sequence<unsigned long>, QtPrivate::List<>, void, KIO::Connection::read(int*, QByteArray&)::$_0>::call(KIO::Connection::read(int*, QByteArray&)::$_0&, void**)::{lambda()#1}&&) (args=0x558f8744e378, fn=...) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:65 #48 0x00007f853fe91062 in QtPrivate::FunctorCall<std::integer_sequence<unsigned long>, QtPrivate::List<>, void, KIO::Connection::read(int*, QByteArray&)::$_0>::call(KIO::Connection::read(int*, QByteArray&)::$_0&, void**) (f=..., arg=0x558f8744e378) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:115 #49 0x00007f853fe91011 in QtPrivate::FunctorCallable<KIO::Connection::read(int*, QByteArray&)::$_0>::call<QtPrivate::List<>, void>(KIO::Connection::read(int*, QByteArray&)::$_0&, void*, void**) (f=..., arg=0x558f8744e378) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:337 #50 0x00007f853fe90fb8 in QtPrivate::QCallableObject<KIO::Connection::read(int*, QByteArray&)::$_0, QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) (which=1, this_=0x558f870ee2f0, r=0x558f86eea600, a=0x558f8744e378, ret=0x0) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:547 #51 0x00007f853dca8a74 in QObject::event (this=<optimized out>, e=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qobject.cpp:1432 #52 0x00007f853ebc9dd0 in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x558f86eea600, e=0x558f8744e330) at /usr/src/debug/qt6-base/qtbase/src/widgets/kernel/qapplication.cpp:3300 #53 0x00007f853dc4f678 in QCoreApplication::notifyInternal2 (receiver=0x558f86eea600, event=event@entry=0x558f8744e330) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qcoreapplication.cpp:1106 #54 0x00007f853dc4fa5b in QCoreApplication::sendEvent (receiver=<optimized out>, event=0x558f8744e330) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qcoreapplication.cpp:1546 #55 QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=0, data=0x558f863fdb20) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qcoreapplication.cpp:1891 #56 0x00007f853df2a7f8 in QCoreApplication::sendPostedEvents (receiver=0x0, event_type=0) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qcoreapplication.cpp:1744 #57 postEventSourceDispatch (s=0x558f86407d10) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qeventdispatcher_glib.cpp:246 #58 0x00007f853b0d2f4d in g_main_dispatch (context=0x7f8530000f50) at ../glib/glib/gmain.c:3565 #59 0x00007f853b0d4617 in g_main_context_dispatch_unlocked (context=0x7f8530000f50) at ../glib/glib/gmain.c:4425 #60 g_main_context_iterate_unlocked (context=context@entry=0x7f8530000f50, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/glib/gmain.c:4490 #61 0x00007f853b0d4825 in g_main_context_iteration (context=0x7f8530000f50, may_block=1) at ../glib/glib/gmain.c:4556 #62 0x00007f853df26fe2 in QEventDispatcherGlib::processEvents (this=0x558f86410820, flags=...) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qeventdispatcher_glib.cpp:399 #63 0x00007f853dc5bca6 in QEventLoop::processEvents (this=0x7fffa75a2c20, flags=...) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qeventloop.cpp:104 #64 QEventLoop::exec (this=0x7fffa75a2c20, flags=...) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qeventloop.cpp:186 #65 0x00007f853dc53d21 in QCoreApplication::exec () at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qcoreapplication.cpp:1449 #66 0x0000558f47588d90 in ??? () #67 0x00007f853d665675 in __libc_start_call_main (main=main@entry=0x558f47586b90, argc=argc@entry=1, argv=argv@entry=0x7fffa75a30d8) at ../sysdeps/nptl/libc_start_call_main.h:58 #68 0x00007f853d665729 in __libc_start_main_impl (main=0x558f47586b90, argc=1, argv=0x7fffa75a30d8, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffa75a30c8) at ../csu/libc-start.c:360 #69 0x0000558f47589eb5 in ??? () Is causing a dirty directory which we list on again #0 0x00007f853ffddbdc in KCoreDirListerCache::handleFileDirty (this=0x558f86925390, url=...) at /home/me/src/kio/src/core/kcoredirlister.cpp:1096 #1 0x00007f853ffce703 in KCoreDirListerCache::slotFileDirty (this=0x558f86925390, path=...) at /home/me/src/kio/src/core/kcoredirlister.cpp:1056 #2 0x00007f85400011a4 in QtPrivate::FunctorCall<std::integer_sequence<unsigned long, 0ul>, QtPrivate::List<QString const&>, void, void (KCoreDirListerCache::*)(QString const&)>::call(void (KCoreDirListerCache::*)(QString const&), KCoreDirListerCache*, void**)::{lambda()#1}::operator()() const (this=0x7fffa75a2350) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:127 #3 0x00007f8540001129 in QtPrivate::FunctorCallBase::call_internal<void, QtPrivate::FunctorCall<std::integer_sequence<unsigned long, 0ul>, QtPrivate::List<QString const&>, void, void (KCoreDirListerCache::*)(QString const&)>::call(void (KCoreDirListerCache::*)(QString const&), KCoreDirListerCache*, void**)::{lambda()#1}>(void**, QtPrivate::FunctorCall<std::integer_sequence<unsigned long, 0ul>, QtPrivate::List<QString const&>, void, void (KCoreDirListerCache::*)(QString const&)>::call(void (KCoreDirListerCache::*)(QString const&), KCoreDirListerCache*, void**)::{lambda()#1}&&) (args=0x7fffa75a2570, fn=...) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:65 #4 0x00007f85400010f3 in QtPrivate::FunctorCall<std::integer_sequence<unsigned long, 0ul>, QtPrivate::List<QString const&>, void, void (KCoreDirListerCache::*)(QString const&)>::call (f=(void (KCoreDirListerCache::*)(KCoreDirListerCache * const, const QString &)) 0x7f853ffce340 <KCoreDirListerCache::slotFileDirty(QString const&)>, o=0x558f86925390, arg=0x7fffa75a2570) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:126 #5 0x00007f854000106d in QtPrivate::FunctionPointer<void (KCoreDirListerCache::*)(QString const&)>::call<QtPrivate::List<QString const&>, void> (f=(void (KCoreDirListerCache::*)(KCoreDirListerCache * const, const QString &)) 0x7f853ffce340 <KCoreDirListerCache::slotFileDirty(QString const&)>, o=0x558f86925390, arg=0x7fffa75a2570) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:174 #6 0x00007f8540000f96 in QtPrivate::QCallableObject<void (KCoreDirListerCache::*)(QString const&), QtPrivate::List<QString const&>, void>::impl (which=1, this_=0x558f86926d70, r=0x558f86925390, a=0x7fffa75a2570, ret=0x0) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:545 #7 0x00007f853dcbb66f in QtPrivate::QSlotObjectBase::call (this=0x558f86926d70, r=0x558f86925390, a=0x7fffa75a2570, this=<optimized out>, r=<optimized out>, a=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qobjectdefs_impl.h:461 #8 doActivate<false> (sender=<optimized out>, signal_index=<optimized out>, argv=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qobject.cpp:4157 #9 0x00007f853f3a6b8d in QMetaObject::activate<void, QString> (sender=0x7f853f5150f0 <QGlobalStatic<QtGlobalStatic::Holder<(anonymous namespace)::Q_QGS_s_pKDirWatchSelf> >::instance()::holder>, mo=0x7f853f50ec80 <KDirWatch::staticMetaObject>, local_signal_index=0, ret=0x0) at /usr/include/qt6/QtCore/qobjectdefs.h:306 #10 0x00007f853f3e5049 in KDirWatch::dirty (this=0x7f853f5150f0 <QGlobalStatic<QtGlobalStatic::Holder<(anonymous namespace)::Q_QGS_s_pKDirWatchSelf> >::instance()::holder>, _t1=...) at /home/me/src/kcoreaddons/build/src/lib/KF6CoreAddons_autogen/include/moc_kdirwatch.cpp:153 #11 0x00007f853f3e485f in KDirWatch::setDirty (this=0x7f853f5150f0 <QGlobalStatic<QtGlobalStatic::Holder<(anonymous namespace)::Q_QGS_s_pKDirWatchSelf> >::instance()::holder>, _file=...) at /home/me/src/kcoreaddons/src/lib/io/kdirwatch.cpp:1813 #12 0x00007f853f3e225e in operator() (__closure=0x558f870940a0) at /home/me/src/kcoreaddons/src/lib/io/kdirwatch.cpp:1388 #13 0x00007f853f3e65f5 in operator() (__closure=0x7fffa75a2660) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:116 #14 0x00007f853f3e673b in QtPrivate::FunctorCallBase::call_internal<void, QtPrivate::FunctorCall<std::integer_sequence<long unsigned int>, QtPrivate::List<>, void, KDirWatchPrivate::emitEvent(Entry*, int, const QString&)::<lambda()> >::call(KDirWatchPrivate::emitEvent(Entry*, int, const QString&)::<lambda()>&, void**)::<lambda()> >(void **, struct {...} &&) (args=0x558f86f67958, fn=...) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:65 #15 0x00007f853f3e663a in QtPrivate::FunctorCall<std::integer_sequence<long unsigned int>, QtPrivate::List<>, void, KDirWatchPrivate::emitEvent(Entry*, int, const QString&)::<lambda()> >::call(struct {...} &, void **) (f=..., arg=0x558f86f67958) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:115 #16 0x00007f853f3e64af in QtPrivate::FunctorCallable<KDirWatchPrivate::emitEvent(Entry*, int, const QString&)::<lambda()> >::call<QtPrivate::List<>, void>(struct {...} &, void *, void **) (f=..., arg=0x558f86f67958) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:337 #17 0x00007f853f3e6361 in QtPrivate::QCallableObject<KDirWatchPrivate::emitEvent(Entry*, int, const QString&)::<lambda()>, QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase *, QObject *, void **, bool *) (which=1, this_=0x558f87094090, r=0x7f853f5150f0 <QGlobalStatic<QtGlobalStatic::Holder<(anonymous namespace)::Q_QGS_s_pKDirWatchSelf> >::instance()::holder>, a=0x558f86f67958, ret=0x0) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:547 #18 0x00007f853dca8a74 in QObject::event (this=<optimized out>, e=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qobject.cpp:1432 #19 0x00007f853f3e4ac8 in KDirWatch::event (this=0x7f853f5150f0 <QGlobalStatic<QtGlobalStatic::Holder<(anonymous namespace)::Q_QGS_s_pKDirWatchSelf> >::instance()::holder>, event=0x558f86f67910) at /home/me/src/kcoreaddons/src/lib/io/kdirwatch.cpp:1858 #20 0x00007f853ebc9dd0 in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x7f853f5150f0 <QGlobalStatic<QtGlobalStatic::Holder<(anonymous namespace)::Q_QGS_s_pKDirWatchSelf> >::instance()::holder>, e=0x558f86f67910) at /usr/src/debug/qt6-base/qtbase/src/widgets/kernel/qapplication.cpp:3300 #21 0x00007f853dc4f678 in QCoreApplication::notifyInternal2 (receiver=0x7f853f5150f0 <QGlobalStatic<QtGlobalStatic::Holder<(anonymous namespace)::Q_QGS_s_pKDirWatchSelf> >::instance()::holder>, event=event@entry=0x558f86f67910) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qcoreapplication.cpp:1106 #22 0x00007f853dc4fa5b in QCoreApplication::sendEvent (receiver=<optimized out>, event=0x558f86f67910) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qcoreapplication.cpp:1546 #23 QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=0, data=0x558f863fdb20) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qcoreapplication.cpp:1891 #24 0x00007f853df2a7f8 in QCoreApplication::sendPostedEvents (receiver=0x0, event_type=0) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qcoreapplication.cpp:1744 #25 postEventSourceDispatch (s=0x558f86407d10) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qeventdispatcher_glib.cpp:246 #26 0x00007f853b0d2f4d in g_main_dispatch (context=0x7f8530000f50) at ../glib/glib/gmain.c:3565 #27 0x00007f853b0d4617 in g_main_context_dispatch_unlocked (context=0x7f8530000f50) at ../glib/glib/gmain.c:4425 #28 g_main_context_iterate_unlocked (context=context@entry=0x7f8530000f50, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/glib/gmain.c:4490 #29 0x00007f853b0d4825 in g_main_context_iteration (context=0x7f8530000f50, may_block=1) at ../glib/glib/gmain.c:4556 #30 0x00007f853df26fe2 in QEventDispatcherGlib::processEvents (this=0x558f86410820, flags=...) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qeventdispatcher_glib.cpp:399 #31 0x00007f853dc5bca6 in QEventLoop::processEvents (this=0x7fffa75a2c20, flags=...) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qeventloop.cpp:104 #32 QEventLoop::exec (this=0x7fffa75a2c20, flags=...) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qeventloop.cpp:186 #33 0x00007f853dc53d21 in QCoreApplication::exec () at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qcoreapplication.cpp:1449 #34 0x0000558f47588d90 in ??? () #35 0x00007f853d665675 in __libc_start_call_main (main=main@entry=0x558f47586b90, argc=argc@entry=1, argv=argv@entry=0x7fffa75a30d8) at ../sysdeps/nptl/libc_start_call_main.h:58 #36 0x00007f853d665729 in __libc_start_main_impl (main=0x558f47586b90, argc=1, argv=0x7fffa75a30d8, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffa75a30c8) at ../csu/libc-start.c:360 #37 0x0000558f47589eb5 in ??? () loop continues forever. tmpfile -> dirtydir -> listdir -> tmpfile -> dirtdir -> listdir -> tmpfile ...
I believe this temporary file is basically just working around the inflexible KConfig API. We'd not need the tmpfile if we could assemble the config in memory. To that end I believe the solution here is to refactor KConfig a bit so it can accept a QIODevice instead of a file path. This would then allow us to create a memfd-backed QIODevice that purely lives in memory and doesn't require the tmpfile dance. Probably needs some restructuring of KConfig internals though so as to not get confused between path-based configs and QIOD-based configs.
I've drafted a possible change to kconfig that should allow us to get rid of the temp file https://invent.kde.org/frameworks/kconfig/-/merge_requests/393
after the update dolphin 25.08.2 > 25.08.3 With the /tmp tab open, it consumes: 5%-7% when the tab is active 1%-2% when another tab is active Also, when Dolphin first launches, it consumes 1%-2% of the CPU with any open tab. After restarting Dolphin, it consumes 0% unless /tmp is open.