https://bugs.kde.org/show_bug.cgi?id=465011
Bug ID: 465011 Summary: plasmashell freezes for some time after accessing an NFSv4 share with crossmounts Classification: Plasma Product: plasmashell Version: 5.26.5 Platform: Gentoo Packages OS: Linux Status: REPORTED Severity: normal Priority: NOR Component: general Assignee: plasma-b...@kde.org Reporter: till2.schae...@uni-dortmund.de CC: k...@davidedmundson.co.uk Target Milestone: 1.0 I have a NFSv4 (4.2, krb5i) share mounted on my system via fstab which points to a directory with several different mounted filesystems (about 10). Whenever I access that directory the first time, crossmount causes each filesystem to be mounted separately on the client. In this situation plasma will freeze for about a minute until I can continue my work. After a minute or so I get some notifications form Plasma Desktop Worksapce "filesystem is not responding" for each crossmount. The interesting thing is, that I can continue to work on that crossmounts from terminal. E.g. an 'ls' on that NFS share returns after a very short time, but causes plasma to freezes for much longer. While plasma is frozen I can access the shares content on the terminal without any hassle. However, KDE applikations like krusader, dolphin, or the file open dialog are also blocking. I have attached wireshark to my network interface, and there is no package loss or something like that happening. I can see many plasma related requests to the NFS server, e.g. querying for the existence of some special files or folders in the crossmounts like '.directory'. Then the network requests just stop when plasma freezes and continue after some time without anything in between. My guess is, that plasma somehow tries to gather information about new mounts and does so in a blocking fashion. While plasma was frozen, I have attached a debugger and did a stack trace (see below) which points to KFilePlacesModelPrivate::deviceAdded and then KBookmark related stuff. /etc/export of server: /srv/nfs/ 192.168.2.0/25(async,rw,no_subtree_check,crossmnt,sec=krb5:krb5i:krb5p,fsid=root) fstab of client: nfs.some.domain:/data /data/server/dfs nfs4 _netdev,rw,vers=4.2,acl,sec=krb5i,noatime 0 0 Accessing that share causes the subsequent mount of subshares (crossmnt). nfs.some.domain:/data on /data/server/dfs type nfs4 (rw,noatime,vers=4.2,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=krb5i,clientaddr=192.168.2.72,local_lock=none,addr=192.168.2.20,_netdev) nfs.some.domain:/userfiles/till on /data/server/userfiles type nfs4 (rw,noatime,vers=4.2,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=krb5i,clientaddr=192.168.2.72,local_lock=none,addr=192.168.2.20,_netdev) nfs.some.domain:/till_data on /home/till/data type nfs4 (rw,noatime,vers=4.2,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=krb5i,clientaddr=192.168.2.72,local_lock=none,addr=192.168.2.20,_netdev) nfs.some.domain:/data/ebooks on /home/till/ebooks type nfs4 (rw,noatime,vers=4.2,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=krb5i,clientaddr=192.168.2.72,local_lock=none,addr=192.168.2.20,_netdev) tmpfs on /run/user/1000 type tmpfs (rw,nosuid,nodev,relatime,size=2453388k,nr_inodes=613347,mode=700,uid=1000,gid=1000) portal on /run/user/1000/doc type fuse.portal (rw,nosuid,nodev,relatime,user_id=1000,group_id=1000) nfs.some.domain:/data/movie on /data/server/dfs/movie type nfs4 (rw,noatime,vers=4.2,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=krb5i,clientaddr=192.168.2.72,local_lock=none,addr=192.168.2.20) nfs.some.domain:/data/backup on /data/server/dfs/backup type nfs4 (rw,noatime,vers=4.2,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=krb5i,clientaddr=192.168.2.72,local_lock=none,addr=192.168.2.20) nfs.some.domain:/data/bilder on /data/server/dfs/bilder type nfs4 (rw,noatime,vers=4.2,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=krb5i,clientaddr=192.168.2.72,local_lock=none,addr=192.168.2.20) nfs.some.domain:/data/download on /data/server/dfs/download type nfs4 (rw,noatime,vers=4.2,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=krb5i,clientaddr=192.168.2.72,local_lock=none,addr=192.168.2.20) nfs.some.domain:/data/ebooks on /data/server/dfs/ebooks type nfs4 (rw,noatime,vers=4.2,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=krb5i,clientaddr=192.168.2.72,local_lock=none,addr=192.168.2.20) nfs.some.domain:/data/familie on /data/server/dfs/familie type nfs4 (rw,noatime,vers=4.2,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=krb5i,clientaddr=192.168.2.72,local_lock=none,addr=192.168.2.20) nfs.some.domain:/data/musik on /data/server/dfs/musik type nfs4 (rw,noatime,vers=4.2,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=krb5i,clientaddr=192.168.2.72,local_lock=none,addr=192.168.2.20) nfs.some.domain:/data/scan on /data/server/dfs/scan type nfs4 (rw,noatime,vers=4.2,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=krb5i,clientaddr=192.168.2.72,local_lock=none,addr=192.168.2.20) nfs.some.domain:/data/software on /data/server/dfs/software type nfs4 (rw,noatime,vers=4.2,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=krb5i,clientaddr=192.168.2.72,local_lock=none,addr=192.168.2.20) nfs.some.domain:/data/wg on /data/server/dfs/wg type nfs4 (rw,noatime,vers=4.2,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=krb5i,clientaddr=192.168.2.72,local_lock=none,addr=192.168.2.20) Stacktrace of plasmashell: (gdb) bt #0 0x00007f5c4b66a64b in QDomNode::operator=(QDomNode const&) (this=0x7fff37801bd8, n=...) at /usr/lib/gcc/x86_64-pc-linux-gnu/11/include/g++-v11/bits/atomic_base.h:392 #1 0x00007f5c46c7cc6b in KBookmark::operator=(KBookmark&&) (this=0x7fff37801bd8) at /var/tmp/portage/kde-frameworks/kbookmarks-5.102.0/work/kbookmarks-5.102.0/src/kbookmark.h:27 #2 KBookmarkGroup::indexOf(KBookmark const&) const (this=this@entry=0x7fff37801c20, child=...) at /var/tmp/portage/kde-frameworks/kbookmarks-5.102.0/work/kbookmarks-5.102.0/src/kbookmark.cpp:139 #3 0x00007f5c46c7db6e in KBookmark::address() const (this=this@entry=0x7fff37801cc0) at /var/tmp/portage/kde-frameworks/kbookmarks-5.102.0/work/kbookmarks-5.102.0/src/kbookmark.cpp:491 #4 0x00007f5c46d67dde in KFilePlacesModelPrivate::loadBookmarkList() (this=this@entry=0x55e89e0ee9e0) at /var/tmp/portage/kde-frameworks/kio-5.102.0/work/kio-5.102.0/src/filewidgets/kfileplacesmodel.cpp:924 #5 0x00007f5c46d6815d in KFilePlacesModelPrivate::reloadBookmarks() (this=this@entry=0x55e89e0ee9e0) at /var/tmp/portage/kde-frameworks/kio-5.102.0/work/kio-5.102.0/src/filewidgets/kfileplacesmodel.cpp:808 #6 0x00007f5c46d69d65 in KFilePlacesModelPrivate::deviceAdded(QString const&) (udi=..., this=0x55e89e0ee9e0) at /var/tmp/portage/kde-frameworks/kio-5.102.0/work/kio-5.102.0/src/filewidgets/kfileplacesmodel.cpp:783 #7 operator() (device=..., __closure=<optimized out>) at /var/tmp/portage/kde-frameworks/kio-5.102.0/work/kio-5.102.0/src/filewidgets/kfileplacesmodel.cpp:761 #8 QtPrivate::FunctorCall<QtPrivate::IndexesList<0>, QtPrivate::List<const QString&>, void, KFilePlacesModelPrivate::initDeviceList()::<lambda(const QString&)> >::call (arg=<optimized out>, f=<optimized out>) at /usr/include/qt5/QtCore/qobjectdefs_impl.h:146 #9 QtPrivate::Functor<KFilePlacesModelPrivate::initDeviceList()::<lambda(const QString&)>, 1>::call<QtPrivate::List<QString const&>, void> (arg=<optimized out>, f=<optimized out>) at /usr/include/qt5/QtCore/qobjectdefs_impl.h:256 #10 QtPrivate::QFunctorSlotObject<KFilePlacesModelPrivate::initDeviceList()::<lambda(const QString&)>, 1, QtPrivate::List<const QString&>, void>::impl(int, QtPrivate::QSlotObjectBase *, QObject *, void **, bool *) (which=<optimized out>, this_=<optimized out>, r=<optimized out>, a=<optimized out>, ret=<optimized out>) at /usr/include/qt5/QtCore/qobjectdefs_impl.h:443 #11 0x00007f5c4c6a7756 in QtPrivate::QSlotObjectBase::call(QObject*, void**) (a=0x7fff37801f30, r=0x55e89e0ef260, this=0x55e89df61e30) at /var/tmp/portage/dev-qt/qtcore-5.15.8-r2/work/qtbase-everywhere-src-5.15.8/include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:398 #12 doActivate<false>(QObject*, int, void**) (sender=0x55e89e0ff640, signal_index=3, argv=0x7fff37801f30) at /var/tmp/portage/dev-qt/qtcore-5.15.8-r2/work/qtbase-everywhere-src-5.15.8/src/corelib/kernel/qobject.cpp:3923 #13 0x00007f5c4c6a156f in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (sender=<optimized out>, m=m@entry=0x7f5c4e51fc80 <Solid::DeviceNotifier::staticMetaObject>, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7fff37801f30) at /var/tmp/portage/dev-qt/qtcore-5.15.8-r2/work/qtbase-everywhere-src-5.15.8/src/corelib/kernel/qobject.cpp:3983 #14 0x00007f5c4e488e92 in Solid::DeviceNotifier::deviceAdded(QString const&) (this=<optimized out>, _t1=<optimized out>) at /var/tmp/portage/kde-frameworks/solid-5.102.0/work/solid-5.102.0_build/src/solid/KF5Solid_autogen/include/moc_devicenotifier.cpp:144 #15 0x00007f5c4c6a779c in doActivate<false>(QObject*, int, void**) (sender=0x55e89df7fab0, signal_index=3, argv=0x7fff37802030) at /var/tmp/portage/dev-qt/qtcore-5.15.8-r2/work/qtbase-everywhere-src-5.15.8/src/corelib/kernel/qobject.cpp:3935 #16 0x00007f5c4c6a156f in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (sender=sender@entry=0x55e89df7fab0, m=m@entry=0x7f5c4e51f4a0 <Solid::Ifaces::DeviceManager::staticMetaObject>, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7fff37802030) at /var/tmp/portage/dev-qt/qtcore-5.15.8-r2/work/qtbase-everywhere-src-5.15.8/src/corelib/kernel/qobject.cpp:3983 #17 0x00007f5c4e475562 in Solid::Ifaces::DeviceManager::deviceAdded(QString const&) (this=this@entry=0x55e89df7fab0, _t1=...) at /var/tmp/portage/kde-frameworks/solid-5.102.0/work/solid-5.102.0_build/src/solid/KF5Solid_autogen/3PYKXLVNWF/moc_devicemanager.cpp:144 #18 0x00007f5c4e4db9a0 in Solid::Backends::Fstab::FstabManager::_k_updateDeviceList() (this=this@entry=0x55e89df7fab0) at /var/tmp/portage/kde-frameworks/solid-5.102.0/work/solid-5.102.0/src/solid/devices/backends/fstab/fstabmanager.cpp:117 #19 0x00007f5c4e4dbf64 in Solid::Backends::Fstab::FstabManager::onMtabChanged() (this=0x55e89df7fab0) at /var/tmp/portage/kde-frameworks/solid-5.102.0/work/solid-5.102.0/src/solid/devices/backends/fstab/fstabmanager.cpp:132 #20 0x00007f5c4c6a7756 in QtPrivate::QSlotObjectBase::call(QObject*, void**) (a=0x7fff378021d0, r=0x55e89df7fab0, this=0x55e89f49f2f0) at /var/tmp/portage/dev-qt/qtcore-5.15.8-r2/work/qtbase-everywhere-src-5.15.8/include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:398 #21 doActivate<false>(QObject*, int, void**) =3, argv=0x7fff378021d0) at /var/tmp/portage/dev-qt/qtcore-5.15.8-r2/work/qtbase-everywhere-src-5.15.8/src/corelib/kernel/qobject.cpp:3923 #22 0x00007f5c4c6a7756 in QtPrivate::QSlotObjectBase::call(QObject*, void**) (a=0x7fff37802300, r=0x7f5c4e522180 <Solid::Backends::Fstab::(anonymous namespace)::Q_QGS_globalFstabWatcher::innerFunction()::holder>, this=0x55e89e028ee0) at /var/tmp/portage/dev-qt/qtcore-5.15.8-r2/work/qtbase-everywhere-src-5.15.8/include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:398 #23 doActivate<false>(QObject*, int, void**) (sender=0x55e89e99ddc0, signal_index=3, argv=0x7fff37802300) at /var/tmp/portage/dev-qt/qtcore-5.15.8-r2/work/qtbase-everywhere-src-5.15.8/src/corelib/kernel/qobject.cpp:3923 #24 0x00007f5c4c6a156f in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (sender=sender@entry=0x55e89e99ddc0, m=m@entry=0x7f5c4c9491c0 <QSocketNotifier::staticMetaObject>, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7fff37802300) at /var/tmp/portage/dev-qt/qtcore-5.15.8-r2/work/qtbase-everywhere-src-5.15.8/src/corelib/kernel/qobject.cpp:3983 #25 0x00007f5c4c6ab1dd in QSocketNotifier::activated(QSocketDescriptor, QSocketNotifier::Type, QSocketNotifier::QPrivateSignal) (this=this@entry=0x55e89e99ddc0, _t1=..., _t2=<optimized out>, _t3=...) at .moc/moc_qsocketnotifier.cpp:178 #26 0x00007f5c4c6ab9db in QSocketNotifier::event(QEvent*) (this=0x55e89e99ddc0, e=0x7fff37802410) at /var/tmp/portage/dev-qt/qtcore-5.15.8-r2/work/qtbase-everywhere-src-5.15.8/src/corelib/kernel/qsocketnotifier.cpp:302 #27 0x00007f5c4d32208e in QApplicationPrivate::notify_helper(QObject*, QEvent*) (this=<optimized out>, receiver=0x55e89e99ddc0, e=0x7fff37802410) at /var/tmp/portage/dev-qt/qtwidgets-5.15.8-r1/work/qtbase-everywhere-src-5.15.8/src/widgets/kernel/qapplication.cpp:3640 #28 0x00007f5c4c6746b8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0x55e89e99ddc0, event=0x7fff37802410) at /var/tmp/portage/dev-qt/qtcore-5.15.8-r2/work/qtbase-everywhere-src-5.15.8/src/corelib/kernel/qcoreapplication.cpp:1064 #29 0x00007f5c4c6c7f1e in socketNotifierSourceDispatch(GSource*, GSourceFunc, gpointer) (source=0x55e89d550ac0) at /var/tmp/portage/dev-qt/qtcore-5.15.8-r2/work/qtbase-everywhere-src-5.15.8/src/corelib/kernel/qeventdispatcher_glib.cpp:107 #30 0x00007f5c4a8565ab in g_main_dispatch (context=0x7f5c40005010) at ../glib-2.74.4/glib/gmain.c:3454 #31 g_main_context_dispatch (context=0x7f5c40005010) at ../glib-2.74.4/glib/gmain.c:4172 #32 0x00007f5c4a856858 in g_main_context_iterate (context=context@entry=0x7f5c40005010, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib-2.74.4/glib/gmain.c:4248 #33 0x00007f5c4a85690f in g_main_context_iteration (context=0x7f5c40005010, may_block=1) at ../glib-2.74.4/glib/gmain.c:4313 #34 0x00007f5c4c6c74e8 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x55e89d5588e0, flags=...) at /var/tmp/portage/dev-qt/qtcore-5.15.8-r2/work/qtbase-everywhere-src-5.15.8/src/corelib/kernel/qeventdispatcher_glib.cpp:423 #35 0x00007f5c4c673123 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x7fff37802620, flags=..., flags@entry=...) at /var/tmp/portage/dev-qt/qtcore-5.15.8-r2/work/qtbase-everywhere-src-5.15.8/include/QtCore/../../src/corelib/global/qflags.h:69 #36 0x00007f5c4c67b1f0 in QCoreApplication::exec() () at /var/tmp/portage/dev-qt/qtcore-5.15.8-r2/work/qtbase-everywhere-src-5.15.8/include/QtCore/../../src/corelib/global/qflags.h:121 #37 0x00007f5c4ca5dd7c in QGuiApplication::exec() () at /var/tmp/portage/dev-qt/qtgui-5.15.8-r2/work/qtbase-everywhere-src-5.15.8/src/gui/kernel/qguiapplication.cpp:1870 #38 0x00007f5c4d322005 in QApplication::exec() () at /var/tmp/portage/dev-qt/qtwidgets-5.15.8-r1/work/qtbase-everywhere-src-5.15.8/src/widgets/kernel/qapplication.cpp:2832 #39 0x000055e89b8248a7 in main(int, char**) (argc=<optimized out>, argv=<optimized out>) at /var/tmp/portage/kde-plasma/plasma-workspace-5.26.5-r1/work/plasma-workspace-5.26.5/shell/main.cpp:233 Operating System: Gentoo Linux 2.9 KDE Plasma Version: 5.26.5 KDE Frameworks Version: 5.102.0 Qt Version: 5.15.8 Kernel Version: 5.15.88-gentoo (64-bit) Graphics Platform: X11 Processors: 8 × Intel® Core™ i7-4790K CPU @ 4.00GHz Memory: 23.4 GiB of RAM Graphics Processor: NVIDIA GeForce GTX 970/PCIe/SSE2 Manufacturer: Gigabyte Technology Co., Ltd. Product Name: Z97X-UD5H -- You are receiving this mail because: You are watching all bug changes.