https://bugs.kde.org/show_bug.cgi?id=513411
Bug ID: 513411
Summary: Dolphin crashes when navigating into remote directory
while processing renaming
(KCoreDirListerCache::emitRedirections)
Classification: Frameworks and Libraries
Product: frameworks-kio
Version First 6.20.0
Reported In:
Platform: Arch Linux
OS: Linux
Status: REPORTED
Severity: crash
Priority: NOR
Component: general
Assignee: [email protected]
Reporter: [email protected]
CC: [email protected]
Target Milestone: ---
Created attachment 187674
--> https://bugs.kde.org/attachment.cgi?id=187674&action=edit
kcrash Backtrace 1
# SUMMARY
If you navigate into a directory on a remote server "quickly" after applying a
rename of that directory, Dolphin will crash.
# STEPS TO REPRODUCE
1. Open Dolphin and browse to a remote device (SFTP used here)
2. Rename a directory on remote device ('F2', edit, 'enter' used here)
3. While the rename is still in progress, navigate into said directory directly
('enter' used here)
4. Dolphin aborts with SIGABRT reproducibly
# OBSERVED RESULT
Dolphin aborts with SIGABRT.
Backtrace shows abort() invoked inside KCoreDirListerCache::printDebug after
KCoreDirListerCache::updateDirectory and KCoreDirListerCache::emitRedirections
were running.
Application emits a log line: "Fatal Error: HUH? Lister KDirLister(...) is
supposed to be listing, but has no job!" immediately before abort.
# EXPECTED RESULT
Renaming a remote directory and concurrent navigation should not result in
crashes.
# SOFTWARE/OS VERSIONS
Operating System: Arch Linux
Dolphin Version: 25.08.3
KDE Plasma Version: 6.5.3
KDE Frameworks Version: 6.20.0
Qt Version: 6.10.1
Kernel Version: 6.12.60-1-lts (64-bit)
Graphics Platform: Wayland
# ERROR MESSAGES
(gdb) b /usr/src/debug/kio/kio-6.20.0/src/core/kcoredirlister.cpp:1579
Breakpoint 3 at 0x7428ca472ba0: file
/usr/src/debug/kio/kio-6.20.0/src/core/kcoredirlister.cpp, line 1580.
(gdb) run
Starting program: /usr/bin/dolphin
kf.kio.core: The unexpected happened.
kf.kio.core: listers for QUrl("sftp://hostname/path/to/renamed_directory") =
QList(KDirLister(0x555555f7d130))
kf.kio.core: job= QObject(0x0)
kf.kio.core: Fatal Error: HUH? Lister KDirLister(0x555555f7d130) is supposed to
be listing, but has no job!
Thread 1 "dolphin" received signal SIGABRT, Aborted.
__pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6,
no_tid=no_tid@entry=0) at pthread_kill.c:44
44 return INTERNAL_SYSCALL_ERROR_P (ret) ? INTERNAL_SYSCALL_ERRNO
(ret) : 0;
(gdb) kf.kio.core.connection: Socket not connected
QLocalSocket::PeerClosedError
kf.kio.core: An error occurred during write. The worker terminates now.
(gdb)
# BACKTRACE (No. 1)
Thread 1 (Thread 0x7fffed68a680 (LWP 223106)):
[KCrash Handler]
#5 __pthread_kill_implementation (threadid=<optimized out>,
signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44
#6 0x00007ffff4a989d3 in __pthread_kill_internal (threadid=<optimized out>,
signo=6) at pthread_kill.c:89
#7 0x00007ffff4a3e3a0 in __GI_raise (sig=sig@entry=6) at
../sysdeps/posix/raise.c:26
#8 0x00007ffff4a2557a in __GI_abort () at abort.c:77
#9 0x00007ffff78570a4 in KCoreDirListerCache::printDebug (this=<optimized
out>) at /usr/src/debug/kio/kio-6.20.0/src/core/kcoredirlister.cpp:2096
#10 0x00007ffff79025d9 in KCoreDirListerCache::updateDirectory
(this=this@entry=0x5555557606f0, _dir=...) at
/usr/src/debug/kio/kio-6.20.0/src/core/kcoredirlister.cpp:646
#11 0x00007ffff79068db in KCoreDirListerCache::emitRedirections
(this=<optimized out>, _oldUrl=..., _newUrl=...) at
/usr/src/debug/kio/kio-6.20.0/src/core/kcoredirlister.cpp:1634
#12 KCoreDirListerCache::renameDir (this=0x5555557606f0, oldUrl=...,
newUrl=...) at /usr/src/debug/kio/kio-6.20.0/src/core/kcoredirlister.cpp:1584
#13 KCoreDirListerCache::slotFileRenamed (this=0x5555557606f0, _src=...,
_dst=..., dstPath=...) at
/usr/src/debug/kio/kio-6.20.0/src/core/kcoredirlister.cpp:927
#14 0x00007ffff53d734f in QtPrivate::QSlotObjectBase::call (this=<optimized
out>, r=<optimized out>, a=<optimized out>, this=<optimized out>, r=<optimized
out>, a=<optimized out>) at
/usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qobjectdefs_impl.h:461
#15 doActivate<false> (sender=<optimized out>, signal_index=<optimized out>,
argv=<optimized out>) at
/usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qobject.cpp:4257
#16 0x00007ffff79494f5 in QMetaObject::activate<void, QString, QString,
QString> (sender=<optimized out>, mo=<optimized out>, local_signal_index=1,
ret=0x0) at /usr/include/qt6/QtCore/qobjectdefs.h:319
#17 OrgKdeKDirNotifyInterface::FileRenamedWithLocalPath (this=<optimized out>,
_t1=..., _t2=..., _t3=...) at
/usr/src/debug/kio/build/src/core/KF6KIOCore_autogen/include/moc_kdirnotify.cpp:186
#18 0x00007ffff7949875 in OrgKdeKDirNotifyInterface::qt_static_metacall
(_o=_o@entry=0x555555a31d20, _c=_c@entry=QMetaObject::InvokeMetaMethod,
_id=_id@entry=1, _a=_a@entry=0x7fffffffcd08) at
/usr/src/debug/kio/build/src/core/KF6KIOCore_autogen/include/moc_kdirnotify.cpp:116
#19 0x00007ffff794e532 in OrgKdeKDirNotifyInterface::qt_metacall
(this=0x555555a31d20, _c=QMetaObject::InvokeMetaMethod, _id=1,
_a=0x7fffffffcd08) at
/usr/src/debug/kio/build/src/core/KF6KIOCore_autogen/include/moc_kdirnotify.cpp:166
#20 0x00007ffff6c8bb71 in QDBusConnectionPrivate::deliverCall
(this=0x7fffe80016e0, object=0x555555a31d20, msg=..., metaTypes=..., slotIdx=6)
at /usr/src/debug/qt6-base/qtbase/src/dbus/qdbusintegrator.cpp:1008
#21 0x00007ffff53c4994 in QObject::event (this=<optimized out>, e=<optimized
out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qobject.cpp:1413
#22 0x00007ffff65021c0 in QApplicationPrivate::notify_helper (this=<optimized
out>, receiver=0x555555a31d20, e=0x7fffe803c600) at
/usr/src/debug/qt6-base/qtbase/src/widgets/kernel/qapplication.cpp:3305
#23 0x00007ffff536a958 in QCoreApplication::notifyInternal2
(receiver=0x555555a31d20, event=event@entry=0x7fffe803c600) at
/usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qcoreapplication.cpp:1109
#24 0x00007ffff536ad30 in QCoreApplication::sendEvent (receiver=<optimized
out>, event=0x7fffe803c600) at
/usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qcoreapplication.cpp:1549
#25 QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=0,
data=0x5555556dab50) at
/usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qcoreapplication.cpp:1904
#26 0x00007ffff564ae18 in QCoreApplication::sendPostedEvents (receiver=0x0,
event_type=0) at
/usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qcoreapplication.cpp:1757
#27 postEventSourceDispatch (s=0x5555556e2870) at
/usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qeventdispatcher_glib.cpp:246
#28 0x00007ffff1facf8d in g_main_dispatch (context=0x7fffe8000f60) at
../glib/glib/gmain.c:3565
#29 0x00007ffff1fae657 in g_main_context_dispatch_unlocked
(context=0x7fffe8000f60) at ../glib/glib/gmain.c:4425
#30 g_main_context_iterate_unlocked (context=context@entry=0x7fffe8000f60,
block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at
../glib/glib/gmain.c:4490
#31 0x00007ffff1fae865 in g_main_context_iteration (context=0x7fffe8000f60,
may_block=1) at ../glib/glib/gmain.c:4556
#32 0x00007ffff5648152 in QEventDispatcherGlib::processEvents
(this=0x5555556e3a60, flags=...) at
/usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qeventdispatcher_glib.cpp:399
#33 0x00007ffff5375786 in QEventLoop::processEvents (this=0x7fffffffd370,
flags=...) at
/usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qeventloop.cpp:104
#34 QEventLoop::exec (this=0x7fffffffd370, flags=...) at
/usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qeventloop.cpp:186
#35 0x00007ffff536f3f1 in QCoreApplication::exec () at
/usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qcoreapplication.cpp:1452
#36 0x00007ffff64fd32a in QApplication::exec () at
/usr/src/debug/qt6-base/qtbase/src/widgets/kernel/qapplication.cpp:2575
#37 0x00005555555a3c7f in main (argc=<optimized out>, argv=<optimized out>) at
/usr/src/debug/dolphin/dolphin-25.08.3/src/main.cpp:272
# EXCERPT OF FULL BACKTRACE
#0 __pthread_kill_implementation (threadid=<optimized out>,
signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44
tid = <optimized out>
ret = 0
pd = <optimized out>
old_mask = {__val = {14}}
ret = <optimized out>
#1 0x00007ffff4a989d3 in __pthread_kill_internal (threadid=<optimized out>,
signo=6) at pthread_kill.c:89
No locals.
#2 0x00007ffff4a3e3a0 in __GI_raise (sig=sig@entry=6) at
../sysdeps/posix/raise.c:26
ret = <optimized out>
#3 0x00007ffff4a2557a in __GI_abort () at abort.c:77
act = {__sigaction_handler = {sa_handler = 0x555556339570, sa_sigaction
= 0x555556339570}, sa_mask = {__val = {93825006802288, 140737488340000,
140737308166117, 93824996733592, 93825006495560, 9147936743080992,
5160890786668905728, 140737488340288, 140737488340288, 140737488340080,
140737346121280, 93824993860192, 93824993860208, 42, 5160890786668905728,
93825002885424}}, sa_flags = -1342405376, sa_restorer = 0x555555ff20e0}
#4 0x00007ffff78570a4 in KCoreDirListerCache::printDebug (this=<optimized
out>) at /usr/src/debug/kio/kio-6.20.0/src/core/kcoredirlister.cpp:2096
listit = 0x555555f7d130
__for_range = @0x7fffffffc520: {<QListSpecialMethods<KCoreDirLister*>>
= {<QListSpecialMethodsBase<KCoreDirLister*>> = {<No data fields>}, <No data
fields>}, d = {d = 0x55555634e030, ptr = 0x55555634e040, size = 1}}
__for_begin = <optimized out>
__for_end = <optimized out>
itu = <optimized out>
ituend = <optimized out>
listersWithoutJob = {<QListSpecialMethods<KCoreDirLister*>> =
{<QListSpecialMethodsBase<KCoreDirLister*>> = {<No data fields>}, <No data
fields>}, d = {d = 0x55555634e030, ptr = 0x55555634e040, size = 1}}
dit = <optimized out>
jit = <optimized out>
cachedDirs = {<QListSpecialMethods<QUrl>> =
{<QListSpecialMethodsBase<QUrl>> = {<No data fields>}, <No data fields>}, d =
{d = 0x5555562ee6f0, ptr = 0x5555562ee700, size = 9}}
#5 0x00007ffff79025d9 in KCoreDirListerCache::updateDirectory
(this=this@entry=0x5555557606f0, _dir=...) at
/usr/src/debug/kio/kio-6.20.0/src/core/kcoredirlister.cpp:646
dir = {d = 0x55555647fc00}
dirData = <optimized out>
listers = {<QListSpecialMethods<KCoreDirLister*>> =
{<QListSpecialMethodsBase<KCoreDirLister*>> = {<No data fields>}, <No data
fields>}, d = {d = 0x5555564a6270, ptr = 0x5555564a6280, size = 1}}
holders = {<QListSpecialMethods<KCoreDirLister*>> =
{<QListSpecialMethodsBase<KCoreDirLister*>> = {<No data fields>}, <No data
fields>}, d = {d = 0x0, ptr = 0x0, size = 0}}
killed = <optimized out>
job = 0x0
requestFromListers = <optimized out>
requestFromholders = <optimized out>
#6 0x00007ffff79068db in KCoreDirListerCache::emitRedirections
(this=<optimized out>, _oldUrl=..., _newUrl=...) at
/usr/src/debug/kio/kio-6.20.0/src/core/kcoredirlister.cpp:1634
oldUrl = {d = 0x555556536340}
newUrl = {d = 0x5555563b7590}
job = <optimized out>
dit = <optimized out>
listers = {<QListSpecialMethods<KCoreDirLister*>> =
{<QListSpecialMethodsBase<KCoreDirLister*>> = {<No data fields>}, <No data
fields>}, d = {d = 0x555556533890, ptr = 0x5555565338a0, size = 1}}
holders = {<QListSpecialMethods<KCoreDirLister*>> =
{<QListSpecialMethodsBase<KCoreDirLister*>> = {<No data fields>}, <No data
fields>}, d = {d = 0x0, ptr = 0x0, size = 0}}
newDirData = @0x555555a50cb8: {m_listerContainer = std::unordered_map
with 1 element = {[0x555555f7d130] = ListerStatus::Listing}}
#7 KCoreDirListerCache::renameDir (this=0x5555557606f0, oldUrl=...,
newUrl=...) at /usr/src/debug/kio/kio-6.20.0/src/core/kcoredirlister.cpp:1584
i = @0x555556535d70: {oldUrl = {d = 0x555556533350}, newUrl = {d =
0x5555564ac840}, dirItem = 0x555556530990}
__for_range = <optimized out>
__for_begin = <optimized out>
__for_end = <optimized out>
itemsToChange = <optimized out>
listers = std::set with 0 elements
--
You are receiving this mail because:
You are watching all bug changes.