Bug 510443 - Dolphin loads CPU during idle when /tmp directory tab is open
Summary: Dolphin loads CPU during idle when /tmp directory tab is open
Status: CONFIRMED
Alias: None
Product: dolphin
Classification: Applications
Component: general (other bugs)
Version First Reported In: 25.08.2
Platform: Arch Linux Linux
: NOR normal
Target Milestone: ---
Assignee: Dolphin Bug Assignee
URL:
Keywords: efficiency-and-performance
Depends on:
Blocks:
 
Reported: 2025-10-10 00:27 UTC by grayich
Modified: 2025-11-16 16:02 UTC (History)
4 users (show)

See Also:
Latest Commit:
Version Fixed/Implemented In:
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description grayich 2025-10-10 00:27:14 UTC
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
Comment 1 Harald Sitter 2025-10-10 11:16:59 UTC
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 ...
Comment 2 Harald Sitter 2025-10-10 12:46:52 UTC
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.
Comment 3 Harald Sitter 2025-10-10 16:15:55 UTC
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
Comment 4 grayich 2025-11-09 01:44:05 UTC
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.