Bug 452100 - Having a stopped systemd automount makes Dolphin crash
Summary: Having a stopped systemd automount makes Dolphin crash
Status: RESOLVED FIXED
Alias: None
Product: dolphin
Classification: Applications
Component: general (show other bugs)
Version: 21.12.3
Platform: Arch Linux Linux
: NOR crash
Target Milestone: ---
Assignee: Dolphin Bug Assignee
URL:
Keywords: drkonqi
Depends on:
Blocks:
 
Reported: 2022-03-31 07:20 UTC by FiveYellowMice
Modified: 2022-03-31 22:15 UTC (History)
2 users (show)

See Also:
Latest Commit:
Version Fixed In: 22.04


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description FiveYellowMice 2022-03-31 07:20:30 UTC
Application: dolphin (21.12.3)

Qt Version: 5.15.3
Frameworks Version: 5.92.0
Operating System: Linux 5.16.15-arch1-1 x86_64
Windowing System: X11
Distribution: "Arch Linux"
DrKonqi: 5.24.3 [KCrashBackend]

-- Information about the crash:
I have set up a systemd automount to a remote filesystem. Like the fstab line given below:

user@server  /mnt/remote  fuse.sshfs  noauto,x-systemd.automount,x-systemd.mount-timeout=20,x-systemd.idle-timeout=7200,_netdev,users,allow_other,reconnect,ServerAliveInterval=10,ServerAliveCountMax=3  0 0

Normally, Dolphin will display the mounted directory under "Devices" on the side bar, and whenever Dolphin is opened, it triggers systemd to try mounting the remote filesystem. However, when it cannot be mounted (e.g. server is unreachable), Dolphin will hang for a bit before saying the directory cannot be read, this happens every time Dolphin is opened, even if I don't click on the directory. This is annoying but understandable, so I run `systemctl stop mnt-remote.automount` whenever I am on a network that cannot access the server. Doing this makes Dolphin to behave normally when its opened, clicking on the entry under "Devices" immediately produces an error message instead of hanging, and I can still do stuff with other files afterwards.

But this good behaviour seems to only last for a while. After an indeterminate amount time (minutes to hours), any running Dolphin instances spontaneously crash. When I try to open Dolphin again, it immediately hangs for a few seconds before crashing again, which produces the stack trace below.

Starting the automount unit again restores the behaviour prior to stopping it.

Steps to reproduce:

1. Have a systemd automount in fstab.
2. Make the mount always fail.
3. Stop the automount unit with systemctl.
4. Open Dolphin, it should behave fine.
5. Click on the mount point, it should produce an error and be fine afterwards.
6. Navigate to home and wait for it to spontaneously crash.
7. Try to open Dolphin again, it should crash again quickly.

The crash can be reproduced sometimes.

-- Backtrace:
Application: Dolphin (dolphin), signal: Segmentation fault
Content of s_kcrashErrorMessage: {_M_t = {<std::__uniq_ptr_impl<char, std::default_delete<char []> >> = {_M_t = std::tuple containing = {[1] = 0x0, [2] = {<No data fields>}}}, <No data fields>}}
[KCrash Handler]
#6  QString::QString (other=..., this=<optimized out>, this=<optimized out>, other=...) at /usr/include/qt/QtCore/qstring.h:1093
#7  KMountPoint::mountedFrom (this=0x0) at /usr/src/debug/kio-5.92.0/src/core/kmountpoint.cpp:389
#8  0x0000561393dc4f62 in PlacesDataSource::data (this=<optimized out>) at /usr/include/qt/QtCore/qshareddata.h:160
#9  0x00007fd339abdb81 in KUserFeedback::ProviderPrivate::jsonData (this=<optimized out>, mode=<optimized out>) at /usr/src/debug/kuserfeedback-1.2.0/src/provider/core/provider.cpp:215
#10 0x00007fd339ac4f0d in KUserFeedback::ProviderPrivate::submit (this=this@entry=0x5613948727b0, url=...) at /usr/src/debug/kuserfeedback-1.2.0/src/provider/core/provider.cpp:659
#11 0x00007fd339ac526f in KUserFeedback::ProviderPrivate::submitProbeFinished (reply=0x56139492bc00, this=0x5613948727b0) at /usr/src/debug/kuserfeedback-1.2.0/src/provider/core/provider.cpp:690
#12 operator() (__closure=<optimized out>) at /usr/src/debug/kuserfeedback-1.2.0/src/provider/core/provider.cpp:668
#13 QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, KUserFeedback::ProviderPrivate::submitProbe(const QUrl&)::<lambda()> >::call (arg=<optimized out>, f=...) at /usr/include/qt/QtCore/qobjectdefs_impl.h:146
#14 QtPrivate::Functor<KUserFeedback::ProviderPrivate::submitProbe(const QUrl&)::<lambda()>, 0>::call<QtPrivate::List<>, void> (arg=<optimized out>, f=...) at /usr/include/qt/QtCore/qobjectdefs_impl.h:256
#15 QtPrivate::QFunctorSlotObject<KUserFeedback::ProviderPrivate::submitProbe(const QUrl&)::<lambda()>, 0, QtPrivate::List<>, 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/qt/QtCore/qobjectdefs_impl.h:443
#16 0x00007fd338b1a463 in QtPrivate::QSlotObjectBase::call (a=<optimized out>, r=<optimized out>, this=<optimized out>, this=<optimized out>, r=<optimized out>, a=<optimized out>) at ../../include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:398
#17 doActivate<false> (sender=0x56139492bc00, signal_index=10, argv=0x7ffe076552e0) at kernel/qobject.cpp:3886
#18 0x00007fd3381c2f58 in QNetworkReplyHttpImplPrivate::finished (this=0x56139490b990) at access/qnetworkreplyhttpimpl.cpp:2280
#19 0x00007fd338b0d7d6 in QObject::event (this=<optimized out>, e=0x7fd2a402fb70) at kernel/qobject.cpp:1314
#20 0x00007fd3395611c6 in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x56139492bc00, e=0x7fd2a402fb70) at kernel/qapplication.cpp:3637
#21 0x00007fd338ae95aa in QCoreApplication::notifyInternal2 (receiver=0x56139492bc00, event=0x7fd2a402fb70) at kernel/qcoreapplication.cpp:1064
#22 0x00007fd338aea0a9 in QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=0, data=0x561393ead610) at kernel/qcoreapplication.cpp:1821
#23 0x00007fd338b31678 in postEventSourceDispatch (s=0x561393f8a330) at kernel/qeventdispatcher_glib.cpp:277
#24 0x00007fd3367c9163 in g_main_dispatch (context=0x7fd32c005010) at ../glib/glib/gmain.c:3417
#25 g_main_context_dispatch (context=0x7fd32c005010) at ../glib/glib/gmain.c:4135
#26 0x00007fd33681f9e9 in g_main_context_iterate.constprop.0 (context=context@entry=0x7fd32c005010, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/glib/gmain.c:4211
#27 0x00007fd3367c66c5 in g_main_context_iteration (context=0x7fd32c005010, may_block=1) at ../glib/glib/gmain.c:4276
#28 0x00007fd338b3557a in QEventDispatcherGlib::processEvents (this=0x561393f8b430, flags=...) at kernel/qeventdispatcher_glib.cpp:423
#29 0x00007fd338ae188b in QEventLoop::exec (this=0x7ffe07655800, flags=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:69
#30 0x00007fd338aecfd7 in QCoreApplication::exec () at ../../include/QtCore/../../src/corelib/global/qflags.h:121
#31 0x00007fd338eb9432 in QGuiApplication::exec () at kernel/qguiapplication.cpp:1867
#32 0x00007fd33955f54a in QApplication::exec () at kernel/qapplication.cpp:2829
#33 0x0000561393d770c1 in main (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/dolphin-21.12.3/src/main.cpp:230
[Inferior 1 (process 8859) detached]

Possible duplicates by query: bug 450981, bug 449886, bug 449368, bug 447907, bug 446090.

Reported using DrKonqi
Comment 1 Nicolas Fella 2022-03-31 21:25:10 UTC
Git commit 1041b52c7a9002d682246052a587e9a17357afa1 by Nicolas Fella.
Committed on 31/03/2022 at 21:24.
Pushed by nicolasfella into branch 'release/22.04'.

Don't crash when mountpoint is not found

findByPath may return a nullptr, in that case don't access it

M  +1    -1    src/userfeedback/placesdatasource.cpp

https://invent.kde.org/system/dolphin/commit/1041b52c7a9002d682246052a587e9a17357afa1
Comment 2 Nicolas Fella 2022-03-31 22:15:04 UTC
This should fix the crash. I wasn't able to reproduce it, but it's somewhat obvious what's happening