Bug 494224 - Plasma crashes after waking with network share mount in /etc/fstab
Summary: Plasma crashes after waking with network share mount in /etc/fstab
Status: REPORTED
Alias: None
Product: plasmashell
Classification: Plasma
Component: generic-crash (show other bugs)
Version: 6.1.5
Platform: Fedora RPMs Linux
: NOR crash
Target Milestone: 1.0
Assignee: Plasma Bugs List
URL:
Keywords: drkonqi
: 493664 497022 (view as bug list)
Depends on:
Blocks:
 
Reported: 2024-10-07 00:22 UTC by gabriel
Modified: 2024-12-10 21:58 UTC (History)
5 users (show)

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


Attachments
New crash information added by DrKonqi (155.15 KB, text/plain)
2024-10-07 00:22 UTC, gabriel
Details

Note You need to log in before you can comment on or make changes to this bug.
Description gabriel 2024-10-07 00:22:04 UTC
Application: plasmashell (6.1.5)

Qt Version: 6.7.2
Frameworks Version: 6.6.0
Operating System: Linux 6.10.12-200.fc40.x86_64 x86_64
Windowing System: Wayland
Distribution: "Fedora Linux 40 (KDE Plasma)"
DrKonqi: 6.1.5 [CoredumpBackend]

-- Information about the crash:
While sleeping, plasmashell crashes. Sometimes no GUI will be available after waking from sleep

The reporter is unsure if this crash is reproducible.

-- Backtrace (Reduced):
#5  std::__atomic_base<int>::fetch_add (this=<optimized out>, __i=1, __m=std::memory_order::acq_rel) at /usr/include/qt6/QtCore/qbasicatomic.h:47
#6  QAtomicOps<int>::ref<int> (_q_value=<optimized out>) at /usr/include/qt6/QtCore/qatomic_cxx11.h:259
[...]
#10 QArrayDataPointer<char16_t>::QArrayDataPointer (this=0x7ff74f3ff1f0, other=<optimized out>) at /usr/include/qt6/QtCore/qarraydatapointer.h:40
#11 QString::QString (this=0x7ff74f3ff1f0, other=<optimized out>, this=<optimized out>, other=<optimized out>) at /usr/include/qt6/QtCore/qstring.h:1186
#12 Solid::DevicePrivate::udi (this=<optimized out>) at /usr/src/debug/kf6-solid-6.6.0-1.fc40.x86_64/src/solid/devices/frontend/device_p.h:32


Reported using DrKonqi
Comment 1 gabriel 2024-10-07 00:22:05 UTC
Created attachment 174494 [details]
New crash information added by DrKonqi

DrKonqi auto-attaching complete backtrace.
Comment 2 Akseli Lahtinen 2024-10-07 10:14:51 UTC
searchable backtrace


Thread 1 (Thread 0x7ff74f4006c0 (LWP 64333)):
[KCrash Handler]
#5  std::__atomic_base<int>::fetch_add (this=<optimized out>, __i=1, __m=std::memory_order::acq_rel) at /usr/include/qt6/QtCore/qbasicatomic.h:47
#6  QAtomicOps<int>::ref<int> (_q_value=<optimized out>) at /usr/include/qt6/QtCore/qatomic_cxx11.h:259
#7  QBasicAtomicInteger<int>::ref (this=<optimized out>) at /usr/include/qt6/QtCore/qbasicatomic.h:47
#8  QArrayData::ref (this=<optimized out>, this=<optimized out>) at /usr/include/qt6/QtCore/qarraydata.h:58
#9  QArrayDataPointer<char16_t>::ref (this=0x7ff74f3ff1f0) at /usr/include/qt6/QtCore/qarraydatapointer.h:438
#10 QArrayDataPointer<char16_t>::QArrayDataPointer (this=0x7ff74f3ff1f0, other=<optimized out>) at /usr/include/qt6/QtCore/qarraydatapointer.h:40
#11 QString::QString (this=0x7ff74f3ff1f0, other=<optimized out>, this=<optimized out>, other=<optimized out>) at /usr/include/qt6/QtCore/qstring.h:1186
#12 Solid::DevicePrivate::udi (this=<optimized out>) at /usr/src/debug/kf6-solid-6.6.0-1.fc40.x86_64/src/solid/devices/frontend/device_p.h:32
#13 Solid::Device::udi (this=this@entry=0x7ff8140897e8) at /usr/src/debug/kf6-solid-6.6.0-1.fc40.x86_64/src/solid/devices/frontend/device.cpp:70
#14 0x00007ff8197662d8 in operator() (__closure=<optimized out>, device=...) at /usr/src/debug/kf6-kio-6.6.0-1.fc40.x86_64/src/filewidgets/kfileplacesmodel.cpp:744
#15 __gnu_cxx::__ops::_Iter_pred<KFilePlacesModelPrivate::deviceRemoved(const QString&)::<lambda(const Solid::Device&)> >::operator()<QList<Solid::Device>::iterator> (this=<optimized out>, __it=...) at /usr/include/c++/14/bits/predefined_ops.h:318
#16 std::__find_if<QList<Solid::Device>::iterator, __gnu_cxx::__ops::_Iter_pred<KFilePlacesModelPrivate::deviceRemoved(const QString&)::<lambda(const Solid::Device&)> > > (__first=..., __last=..., __pred=...) at /usr/include/c++/14/bits/stl_algobase.h:2109
#17 std::__find_if<QList<Solid::Device>::iterator, __gnu_cxx::__ops::_Iter_pred<KFilePlacesModelPrivate::deviceRemoved(const QString&)::<lambda(const Solid::Device&)> > > (__first=..., __last=..., __pred=...) at /usr/include/c++/14/bits/stl_algobase.h:2142
#18 std::find_if<QList<Solid::Device>::iterator, KFilePlacesModelPrivate::deviceRemoved(const QString&)::<lambda(const Solid::Device&)> > (__first=..., __last=..., __pred=...) at /usr/include/c++/14/bits/stl_algo.h:3875
#19 KFilePlacesModelPrivate::deviceRemoved (this=0x7ff720001640, udi=<optimized out>) at /usr/src/debug/kf6-kio-6.6.0-1.fc40.x86_64/src/filewidgets/kfileplacesmodel.cpp:743
#20 operator() (__closure=<optimized out>, device=<optimized out>) at /usr/src/debug/kf6-kio-6.6.0-1.fc40.x86_64/src/filewidgets/kfileplacesmodel.cpp:723
#21 QtPrivate::FunctorCall<QtPrivate::IndexesList<0>, QtPrivate::List<const QString&>, void, KFilePlacesModelPrivate::initDeviceList()::<lambda(const QString&)> >::call (f=<optimized out>, arg=<optimized out>) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:137
#22 QtPrivate::FunctorCallable<KFilePlacesModelPrivate::initDeviceList()::<lambda(const QString&)>, const QString&>::call<QtPrivate::List<QString const&>, void> (f=<optimized out>, arg=<optimized out>) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:345
#23 QtPrivate::QCallableObject<KFilePlacesModelPrivate::initDeviceList()::<lambda(const QString&)>, 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/qt6/QtCore/qobjectdefs_impl.h:555
#24 0x00007ff82d9fc8f2 in QtPrivate::QSlotObjectBase::call (this=0x7ff720018c20, r=<optimized out>, a=0x7ff74f3ff330) at /usr/src/debug/qt6-qtbase-6.7.2-6.fc40.x86_64/src/corelib/kernel/qobjectdefs_impl.h:469
#25 doActivate<false> (sender=0x7ff720029a20, signal_index=4, argv=0x7ff74f3ff330) at /usr/src/debug/qt6-qtbase-6.7.2-6.fc40.x86_64/src/corelib/kernel/qobject.cpp:4086
#26 0x00007ff82d9f2bc7 in QMetaObject::activate (sender=<optimized out>, m=m@entry=0x7ff8306157a0 <Solid::DeviceNotifier::staticMetaObject>, local_signal_index=local_signal_index@entry=1, argv=argv@entry=0x7ff74f3ff330) at /usr/src/debug/qt6-qtbase-6.7.2-6.fc40.x86_64/src/corelib/kernel/qobject.cpp:4146
#27 0x00007ff830571bac in Solid::DeviceNotifier::deviceRemoved (this=<optimized out>, _t1=<optimized out>) at /usr/src/debug/kf6-solid-6.6.0-1.fc40.x86_64/redhat-linux-build/src/solid/KF6Solid_autogen/include/moc_devicenotifier.cpp:162
#28 0x00007ff82d9fc8f2 in QtPrivate::QSlotObjectBase::call (this=0x7ff72000a960, r=<optimized out>, a=0x7ff74f3ff540) at /usr/src/debug/qt6-qtbase-6.7.2-6.fc40.x86_64/src/corelib/kernel/qobjectdefs_impl.h:469
#29 doActivate<false> (sender=0x7ff720066160, signal_index=4, argv=0x7ff74f3ff540) at /usr/src/debug/qt6-qtbase-6.7.2-6.fc40.x86_64/src/corelib/kernel/qobject.cpp:4086
#30 0x00007ff82d9f2bc7 in QMetaObject::activate (sender=sender@entry=0x7ff720066160, m=m@entry=0x7ff830615ea0 <Solid::Ifaces::DeviceManager::staticMetaObject>, local_signal_index=local_signal_index@entry=1, argv=argv@entry=0x7ff74f3ff540) at /usr/src/debug/qt6-qtbase-6.7.2-6.fc40.x86_64/src/corelib/kernel/qobject.cpp:4146
#31 0x00007ff8305cc5d2 in Solid::Ifaces::DeviceManager::deviceRemoved (this=0x7ff720066160, _t1=...) at /usr/src/debug/kf6-solid-6.6.0-1.fc40.x86_64/redhat-linux-build/src/solid/KF6Solid_autogen/include/moc_devicemanager.cpp:162
#32 Solid::Backends::Fstab::FstabManager::_k_updateDeviceList (this=this@entry=0x7ff720066160) at /usr/src/debug/kf6-solid-6.6.0-1.fc40.x86_64/src/solid/devices/backends/fstab/fstabmanager.cpp:123
#33 0x00007ff8305ccfdb in Solid::Backends::Fstab::FstabManager::onMtabChanged (this=0x7ff720066160) at /usr/src/debug/kf6-solid-6.6.0-1.fc40.x86_64/src/solid/devices/backends/fstab/fstabmanager.cpp:132
#34 0x00007ff82d9eddcb in QObject::event (this=0x7ff720066160, e=0x7ff8140dc170) at /usr/src/debug/qt6-qtbase-6.7.2-6.fc40.x86_64/src/corelib/kernel/qobject.cpp:1452
#35 0x00007ff82fd8b218 in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x7ff720066160, e=0x7ff8140dc170) at /usr/src/debug/qt6-qtbase-6.7.2-6.fc40.x86_64/src/widgets/kernel/qapplication.cpp:3287
#36 0x00007ff82d996e88 in QCoreApplication::notifyInternal2 (receiver=0x7ff720066160, event=0x7ff8140dc170) at /usr/src/debug/qt6-qtbase-6.7.2-6.fc40.x86_64/src/corelib/kernel/qcoreapplication.cpp:1142
#37 0x00007ff82d9970ed in QCoreApplication::sendEvent (receiver=<optimized out>, event=<optimized out>) at /usr/src/debug/qt6-qtbase-6.7.2-6.fc40.x86_64/src/corelib/kernel/qcoreapplication.cpp:1583
#38 0x00007ff82d99ac51 in QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=0, data=0x555eeb22fc30) at /usr/src/debug/qt6-qtbase-6.7.2-6.fc40.x86_64/src/corelib/kernel/qcoreapplication.cpp:1940
#39 0x00007ff82d99aefd in QCoreApplication::sendPostedEvents (receiver=<optimized out>, event_type=<optimized out>) at /usr/src/debug/qt6-qtbase-6.7.2-6.fc40.x86_64/src/corelib/kernel/qcoreapplication.cpp:1797
#40 0x00007ff82dc859ef in postEventSourceDispatch (s=0x7ff720000f20) at /usr/src/debug/qt6-qtbase-6.7.2-6.fc40.x86_64/src/corelib/kernel/qeventdispatcher_glib.cpp:244
#41 0x00007ff82c478e8c in g_main_dispatch (context=0x7ff720000c60) at ../glib/gmain.c:3344
#42 g_main_context_dispatch_unlocked (context=0x7ff720000c60) at ../glib/gmain.c:4152
#43 0x00007ff82c4dac98 in g_main_context_iterate_unlocked.isra.0 (context=context@entry=0x7ff720000c60, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/gmain.c:4217
#44 0x00007ff82c47a383 in g_main_context_iteration (context=0x7ff720000c60, may_block=1) at ../glib/gmain.c:4282
#45 0x00007ff82dc851a3 in QEventDispatcherGlib::processEvents (this=0x7ff720000b70, flags=...) at /usr/src/debug/qt6-qtbase-6.7.2-6.fc40.x86_64/src/corelib/kernel/qeventdispatcher_glib.cpp:394
#46 0x00007ff82d9a3bc3 in QEventLoop::exec (this=this@entry=0x7ff74f3ffa70, flags=..., flags@entry=...) at /usr/src/debug/qt6-qtbase-6.7.2-6.fc40.x86_64/src/corelib/global/qflags.h:34
#47 0x00007ff82dab7f4f in QThread::exec (this=<optimized out>) at /usr/src/debug/qt6-qtbase-6.7.2-6.fc40.x86_64/src/corelib/global/qflags.h:74
#48 0x00007ff82db5473c in operator() (__closure=<optimized out>) at /usr/src/debug/qt6-qtbase-6.7.2-6.fc40.x86_64/src/corelib/thread/qthread_unix.cpp:326
#49 (anonymous namespace)::terminate_on_exception<QThreadPrivate::start(void*)::<lambda()> > (t=<optimized out>) at /usr/src/debug/qt6-qtbase-6.7.2-6.fc40.x86_64/src/corelib/thread/qthread_unix.cpp:262
#50 QThreadPrivate::start (arg=0x555ee826d4f0) at /usr/src/debug/qt6-qtbase-6.7.2-6.fc40.x86_64/src/corelib/thread/qthread_unix.cpp:285
#51 0x00007ff82d2a66d7 in start_thread (arg=<optimized out>) at pthread_create.c:447
#52 0x00007ff82d32a60c in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:78
Comment 3 Akseli Lahtinen 2024-10-07 10:15:44 UTC
Do you have anything like network drive in your fstab file? Seems the crash is caused by something in there:


#12 Solid::DevicePrivate::udi (this=<optimized out>) at /usr/src/debug/kf6-solid-6.6.0-1.fc40.x86_64/src/solid/devices/frontend/device_p.h:32
#13 Solid::Device::udi (this=this@entry=0x7ff8140897e8) at /usr/src/debug/kf6-solid-6.6.0-1.fc40.x86_64/src/solid/devices/frontend/device.cpp:70
...
#32 Solid::Backends::Fstab::FstabManager::_k_updateDeviceList (this=this@entry=0x7ff720066160) at /usr/src/debug/kf6-solid-6.6.0-1.fc40.x86_64/src/solid/devices/backends/fstab/fstabmanager.cpp:123
Comment 4 Nate Graham 2024-10-16 17:10:33 UTC
*** Bug 493664 has been marked as a duplicate of this bug. ***
Comment 5 gabriel 2024-10-17 21:27:42 UTC
Yes I do!
I can remove that to see if that helps!
Comment 6 Akseli Lahtinen 2024-10-18 09:48:45 UTC
That would explain it. :) 

It's better to use Dolphin's network folder management for adding such folders. If you add them directly to fstab, it can confuse the system.

Nate, did you have a wiki page for this somewhere?
Comment 7 TraceyC 2024-10-18 19:19:43 UTC
There are valid reasons users might want to have a network mount via /etc/fstab
My own use case is that most music players don't see Samba or nfs folders unless they are mounted locally (they need to see a local folder)
Wouldn't it be better to update the code to be able to work with fstab? (We obviously can't control the behavior of all software to make them all samba/nfs aware)
Comment 8 Nate Graham 2024-10-21 14:51:56 UTC
The problem is that there is an infinite amount of code in KDE software that assumes things that show up as local files won't randomly become transient. Changing all of it is not only an impossible 20 year project, it would likely reduce performance due to the need to check for whether mounts hasn't gone stale.

At least the KDE apps should be updated to be able to find files using the KIO workers. This is a much smaller and more feasible project.

For third-party apps that can't or won't use KIO, a better solution is to encourage people to make use of kio-fuse for this by accessing their shares in Dolphin, and then we change kio-fuse to do the FUSE mount in a persistent, unchanging location. Then we also allow it to be automounted on login, optionally. This would give us the best of both worlds.
Comment 9 gabriel 2024-10-21 15:19:14 UTC
If I remember right, that is what my goal was, to automatically  mount the share at login.
Comment 10 Bug Janitor Service 2024-11-05 03:46:43 UTC
🐛🧹 ⚠️ This bug has been in NEEDSINFO status with no change for at least 15 days. Please provide the requested information, then set the bug status to REPORTED. If there is no change for at least 30 days, it will be automatically closed as RESOLVED WORKSFORME.

For more information about our bug triaging procedures, please read https://community.kde.org/Guidelines_and_HOWTOs/Bug_triaging.

Thank you for helping us make KDE software even better for everyone!
Comment 11 TraceyC 2024-11-05 17:14:28 UTC
.
Comment 12 Steve Vialle 2024-12-10 04:50:30 UTC
(In reply to Nate Graham from comment #8)
> The problem is that there is an infinite amount of code in KDE software that
> assumes things that show up as local files won't randomly become transient.
The problem is that KDE (or more to the point, solid) constantly mucks about in "local" filesystems the user isn't actively accessing, and has no graceful handling for those background i/o operations failing.

A program freezing or crashing when a filesystem the user is currently interacting with (using said program) goes down is expected and largely unavoidable. The whole desktop (or every open file manager window, i.e. the many, many bug reports regarding dolphin and network mounts) doing the same when a filesystem that _isn't_ currently displayed in any window or being accessed by the user is not expected, and furthermore, it's a behaviour that appears to be unique to KDE.


> For third-party apps that can't or won't use KIO, a better solution is to
> encourage people to make use of kio-fuse for this by accessing their shares
> in Dolphin, and then we change kio-fuse to do the FUSE mount in a
> persistent, unchanging location. Then we also allow it to be automounted on
> login, optionally. This would give us the best of both worlds.
It'll also mean that network mounts are reliant on KIO, unreasonably slow (FUSE), only available after login, and (without further manual configuration) only available to a specific user. That's the best of _one_ world - namely a single-user GUI desktop, where that GUI is always KDE.

There are many reasons to mount network shares early in the boot process and at a level below KDE/KIO, and such has been normal practice on every unix for decades. This was never a problem until KDE with its "everything integrated with everything else" design and incessant polling of every available filesystem became involved.
Comment 13 Nate Graham 2024-12-10 18:47:13 UTC
*** Bug 497022 has been marked as a duplicate of this bug. ***
Comment 14 Parag W 2024-12-10 21:40:47 UTC
> Definitely the same backtrace. Maybe network mounts are a red herring. Can you paste your /etc/fstab file into Bug 494224 please? Thanks!

# Static information about the filesystems.
# See fstab(5) for details.

# <file system> <dir> <type> <options> <dump> <pass>
# /dev/sdc2
UUID=fe827356-7ea9-4e1a-8e6f-553d1240a549	/         	xfs       	rw,relatime,inode64,logbufs=8,logbsize=32k,noquota0 1

# /dev/sdc1
UUID=ABB4-2B04      	/boot     	vfat      	rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro	0 2

# /dev/sda1
UUID=8fd3d246-ad34-42c0-8011-776f2fbdb3e9	/home     	xfs       	rw,relatime,inode64,logbufs=8,logbsize=32k,noquota0 2
UUID=fa1e9ffa-4871-482c-870e-af19ece782ff	/data     	xfs       	rw,relatime,inode64,logbufs=8,logbsize=32k,noquota0 2
UUID=49874016-ae3f-40d2-9ce5-bcd476e686b4	/fastdata     	xfs       	rw,relatime,inode64,logbufs=8,logbsize=32k,noquota0 2
Comment 15 Parag W 2024-12-10 21:58:43 UTC
I forgot to add - even though I don't have any unusual mounts in fstab the installation process I linked to in the duplicate bug does make you setup a loop mount 
losetup --partscan /dev/loop1 chromeos_15393.58.0_reven_recovery_stable-channel_mp-v2.bin

But this time I think I got a different back trace - reported here as bug 497299