Bug 472157 - plasmashell exits (not a crash) with wayland protocol error ("Socket operation on non-socket") when searching in Kickoff
Summary: plasmashell exits (not a crash) with wayland protocol error ("Socket operatio...
Status: RESOLVED FIXED
Alias: None
Product: plasmashell
Classification: Plasma
Component: Application Launcher (Kickoff) (show other bugs)
Version: master
Platform: Other Linux
: NOR crash
Target Milestone: 1.0
Assignee: Plasma Bugs List
URL:
Keywords: qt6, wayland
: 472222 (view as bug list)
Depends on:
Blocks:
 
Reported: 2023-07-11 13:17 UTC by Nate Graham
Modified: 2023-08-05 04:38 UTC (History)
6 users (show)

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


Attachments
WAYLAND_DEBUG=1 log output (256.54 KB, text/plain)
2023-07-11 13:17 UTC, Nate Graham
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Nate Graham 2023-07-11 13:17:38 UTC
Created attachment 160234 [details]
WAYLAND_DEBUG=1 log output

STEPS TO REPRODUCE
0. Use today's Plasma 6 git master
1. Open Kickoff
2. Start typing to search


OBSERVED RESULT
Plasmashell visibly restarts. journal log says this:

Jul 11 08:27:09 Liberator systemd[1691]: plasma-plasmashell.service: Failed with result 'exit-code'.
Jul 11 08:27:09 Liberator systemd[1691]: plasma-plasmashell.service: Main process exited, code=exited, status=1/FAILURE
Jul 11 08:27:08 Liberator plasmashell[1938]: The Wayland connection experienced a fatal error: Socket operation on non-socket
Jul 11 08:27:08 Liberator plasmashell[1938]: QSocketNotifier: Invalid socket 6 and type 'Read', disabling...
Jul 11 08:27:08 Liberator plasmashell[1938]: KCrash: Application 'plasmashell' crashing...
Jul 11 08:27:08 Liberator plasmashell[1938]: 31 -- bugaddress=submit@bugs.kde.org
Jul 11 08:27:08 Liberator plasmashell[1938]: 13 -- programname=
Jul 11 08:27:08 Liberator plasmashell[1938]: 19 -- appversion=5.27.80
Jul 11 08:27:08 Liberator plasmashell[1938]: 9 -- pid=1938
Jul 11 08:27:08 Liberator plasmashell[1938]: 10 -- signal=11
Jul 11 08:27:08 Liberator plasmashell[1938]: 32 -- apppath=/home/nate/kde/usr6/bin
Jul 11 08:27:08 Liberator plasmashell[1938]: 20 -- appname=plasmashell
Jul 11 08:27:08 Liberator plasmashell[1938]: 17 -- platform=wayland
Jul 11 08:27:08 Liberator plasmashell[1938]: 40 -- exe=/home/nate/kde/usr6/bin/plasmashell

But it's not crashing; coredumpctl doesn't see anything. WAYLAND_DEBUG=1 log attached


EXPECTED RESULT
Plasmashell doesn't restart when searching in Kickoff


SOFTWARE/OS VERSIONS
Operating System: Fedora Linux 38
KDE Plasma Version: 5.27.80
KDE Frameworks Version: 5.240.0
Qt Version: 6.5.1
Kernel Version: 6.3.11-200.fc38.x86_64 (64-bit)
Graphics Platform: Wayland
Processors: 8 × Intel® Core™ i7-10510U CPU @ 1.80GHz
Memory: 15.2 GiB of RAM
Graphics Processor: Mesa Intel® UHD Graphics


ADDITIONAL INFORMATION
KRunner does not crash or restart when searching.
Comment 1 Patrick Silva 2023-07-13 17:07:47 UTC
*** Bug 472222 has been marked as a duplicate of this bug. ***
Comment 2 Nicolas Fella 2023-07-14 07:32:44 UTC
It does actually segfault for me:

#0  QArrayDataPointer<char16_t>::ref() (this=0x10e0208) at /usr/src/debug/qt6-qtbase-6.5.1-1.fc38.x86_64/src/corelib/tools/qarraydatapointer.h:311
#1  QArrayDataPointer<char16_t>::QArrayDataPointer(QArrayDataPointer<char16_t> const&) (other=..., this=0x10e0208) at /usr/src/debug/qt6-qtbase-6.5.1-1.fc38.x86_64/src/corelib/tools/qarraydatapointer.h:35
#2  QString::QString(QString const&) (other=..., this=0x10e0208) at /usr/src/debug/qt6-qtbase-6.5.1-1.fc38.x86_64/src/corelib/text/qstring.h:1335
#3  QUrlPrivate::QUrlPrivate(QUrlPrivate const&) (copy=..., this=0x10e0200) at /usr/src/debug/qt6-qtbase-6.5.1-1.fc38.x86_64/src/corelib/io/qurl.cpp:589
#4  qAtomicDetach<QUrlPrivate>(QUrlPrivate*&) (d=@0x7fffffffcbc8: 0x7fff04006670) at /usr/src/debug/qt6-qtbase-6.5.1-1.fc38.x86_64/src/corelib/thread/qatomic.h:206
#5  QUrl::detach() (this=0x7fffffffcbc8) at /usr/src/debug/qt6-qtbase-6.5.1-1.fc38.x86_64/src/corelib/io/qurl.cpp:3291
#6  0x00007ffff456b610 in QUrl::adjusted(QUrlTwoFlags<QUrl::UrlFormattingOption, QUrl::ComponentFormattingOption>) const (this=this@entry=0x7fffffffcd08, options=options@entry=...)
    at /usr/src/debug/qt6-qtbase-6.5.1-1.fc38.x86_64/src/corelib/io/qurl.cpp:2950
#7  0x00007ffff777304e in KCoreDirListerCache::slotUpdateResult(KJob*)
    (this=0x7ffff7804880 <QGlobalStatic<QtGlobalStatic::Holder<(anonymous namespace)::Q_QGS_kDirListerCache> >::instance()::holder>, j=0x7fff0403be40) at /usr/include/qt6/QtCore/qurl.h:33
#8  0x00007ffff45cf797 in QObject::event(QEvent*) (this=0x7ffff7804880 <QGlobalStatic<QtGlobalStatic::Holder<(anonymous namespace)::Q_QGS_kDirListerCache> >::instance()::holder>, e=0x7fff04079c60)
    at /usr/src/debug/qt6-qtbase-6.5.1-1.fc38.x86_64/src/corelib/kernel/qobject.cpp:1391
#9  0x00007ffff5bc0b08 in QApplicationPrivate::notify_helper(QObject*, QEvent*)
    (this=<optimized out>, receiver=0x7ffff7804880 <QGlobalStatic<QtGlobalStatic::Holder<(anonymous namespace)::Q_QGS_kDirListerCache> >::instance()::holder>, e=0x7fff04079c60)
    at /usr/src/debug/qt6-qtbase-6.5.1-1.fc38.x86_64/src/widgets/kernel/qapplication.cpp:3287
#10 0x00007ffff457c308 in QCoreApplication::notifyInternal2(QObject*, QEvent*)
    (receiver=0x7ffff7804880 <QGlobalStatic<QtGlobalStatic::Holder<(anonymous namespace)::Q_QGS_kDirListerCache> >::instance()::holder>, event=0x7fff04079c60)
    at /usr/src/debug/qt6-qtbase-6.5.1-1.fc38.x86_64/src/corelib/kernel/qcoreapplication.cpp:1115
#11 0x00007ffff457c50d in QCoreApplication::sendEvent(QObject*, QEvent*) (receiver=<optimized out>, event=<optimized out>)
    at /usr/src/debug/qt6-qtbase-6.5.1-1.fc38.x86_64/src/corelib/kernel/qcoreapplication.cpp:1533
#12 0x00007ffff457fd75 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (receiver=0x0, event_type=0, data=0x50c920)
    at /usr/src/debug/qt6-qtbase-6.5.1-1.fc38.x86_64/src/corelib/kernel/qcoreapplication.cpp:1895
#13 0x00007ffff45800ad in QCoreApplication::sendPostedEvents(QObject*, int) (receiver=<optimized out>, event_type=<optimized out>)
    at /usr/src/debug/qt6-qtbase-6.5.1-1.fc38.x86_64/src/corelib/kernel/qcoreapplication.cpp:1754
#14 0x00007ffff48206df in postEventSourceDispatch(GSource*, GSourceFunc, gpointer) (s=0x555a20) at /usr/src/debug/qt6-qtbase-6.5.1-1.fc38.x86_64/src/corelib/kernel/qeventdispatcher_glib.cpp:243
#15 0x00007ffff37b048c in g_main_dispatch (context=0x7fffdc000f10) at ../glib/gmain.c:3460
#16 g_main_context_dispatch (context=0x7fffdc000f10) at ../glib/gmain.c:4200
#17 0x00007ffff380e638 in g_main_context_iterate.isra.0 (context=0x7fffdc000f10, block=1, dispatch=1, self=<optimized out>) at ../glib/gmain.c:4276
#18 0x00007ffff37adb13 in g_main_context_iteration (context=0x7fffdc000f10, may_block=1) at ../glib/gmain.c:4343
#19 0x00007ffff481ff7f in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x511c00, flags=...)
    at /usr/src/debug/qt6-qtbase-6.5.1-1.fc38.x86_64/src/corelib/kernel/qeventdispatcher_glib.cpp:393
--Type <RET> for more, q to quit, c to continue without paging--c
#20 0x00007ffff4588e93 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x7fffffffd2a0, flags=..., flags@entry=...)
    at /usr/src/debug/qt6-qtbase-6.5.1-1.fc38.x86_64/src/corelib/global/qflags.h:34
#21 0x00007ffff4584b3d in QCoreApplication::exec() () at /usr/src/debug/qt6-qtbase-6.5.1-1.fc38.x86_64/src/corelib/global/qflags.h:74
#22 0x00007ffff4df85cd in QGuiApplication::exec() () at /usr/src/debug/qt6-qtbase-6.5.1-1.fc38.x86_64/src/gui/kernel/qguiapplication.cpp:1894
#23 0x00007ffff5bc0a79 in QApplication::exec() () at /usr/src/debug/qt6-qtbase-6.5.1-1.fc38.x86_64/src/widgets/kernel/qapplication.cpp:2566
#24 0x0000000000424fc0 in main(int, char**) (argc=<optimized out>, argv=<optimized out>) at /home/nico/kde6/src/plasma-workspace/shell/main.cpp:242
Comment 3 Nicolas Fella 2023-07-14 10:40:47 UTC
It doesn't happen after disabling the places runner
Comment 5 Alexander Lohnau 2023-07-15 08:45:42 UTC
Git commit f68983958fd5d5ea0dc8a18760e3db64259904b6 by Alexander Lohnau.
Committed on 15/07/2023 at 08:27.
Pushed by alex into branch 'master'.

runners/places: Fix crash when instantiating places model

This class being moved to a new thread causes issues, because a job is
not being moved to the same thread and is deleted when trying to access
it.

M  +1    -1    runners/places/placesrunner.cpp

https://invent.kde.org/plasma/plasma-workspace/-/commit/f68983958fd5d5ea0dc8a18760e3db64259904b6
Comment 6 Bug Janitor Service 2023-07-25 14:52:49 UTC
A possibly relevant merge request was started @ https://invent.kde.org/plasma/plasma-workspace/-/merge_requests/3109
Comment 7 Alexander Lohnau 2023-08-05 04:38:57 UTC
Git commit 817e08aaeab7fa23880422210b6476b1db0f8f23 by Alexander Lohnau.
Committed on 05/08/2023 at 06:38.
Pushed by alex into branch 'master'.

runners/places: Create KFilePlaceModel in runner's thread

With https://invent.kde.org/frameworks/kio/-/merge_requests/1357 this no
longer causes a crash and the previous workaround could be removed.

M  +19   -21   runners/places/placesrunner.cpp
M  +2    -1    runners/places/placesrunner.h

https://invent.kde.org/plasma/plasma-workspace/-/commit/817e08aaeab7fa23880422210b6476b1db0f8f23