Bug 487148 - SystemdGenie unresponsive (hangs) while refreshing after enabling/disabling or starting/stopping a system unit
Summary: SystemdGenie unresponsive (hangs) while refreshing after enabling/disabling o...
Status: RESOLVED FIXED
Alias: None
Product: systemsettings
Classification: Applications
Component: kcm_systemdgenie (show other bugs)
Version: unspecified
Platform: Manjaro Linux
: NOR normal
Target Milestone: ---
Assignee: Ragnar Thomsen
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2024-05-17 14:27 UTC by Thomas Bertels
Modified: 2025-03-31 19:46 UTC (History)
2 users (show)

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


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Thomas Bertels 2024-05-17 14:27:12 UTC
SUMMARY

SystemdGenie hangs while refreshing the list after enabling/disabling or starting/stopping a system unit.

STEPS TO REPRODUCE
1. Open SystemdGenie
2. Check the boxes to show inactive and unloaded
3. Enable a system unit
3. (alternative way) open a console and enter the command "systemctl status [unit name]"

OBSERVED RESULT

SystemdGenie hangs.

EXPECTED RESULT

SystemdGenie updates quickly the status of the enabled unit.

SOFTWARE/OS VERSIONS
SystemdGenie: 0.99.0
KDE Plasma Version: 6.0.4
KDE Frameworks Version: 6.1.0
Qt Version: 6.7.0

ADDITIONAL INFORMATION

The systemd process cpu usage jumps to 100% while SystemdGenie hangs.

systemctl status [unit name] shows quickly the updated unit status.
That same command also hangs SystemdGenie if it wasn't already so.
Comment 1 TraceyC 2025-02-12 17:03:58 UTC
Can you get a backtrace of what it's doing when it's hung?

Run gdb attach -p $(pidof systemsettings) in a terminal window while it's hung
If it says "--Type  for more, q to quit, c to continue without paging--" at the bottom of the terminal window, press the "c" key.
When you see a prompt that says "(gdb)", type "bt" and press the enter key.
If it says "--Type  for more, q to quit, c to continue without paging--" at the bottom of the terminal window, press the "c" key.
Copy-and-paste the contents of the terminal window into a comment here.

Thanks!
Comment 2 Thomas Bertels 2025-02-12 17:33:04 UTC
gdb systemdgenie allows to download symbols, otherwise the backtrace is useless.
Note that since Plasma 6, SystemdGenie can only be used as a standalone app since it still uses Qt 5. 

Here's the backtrace:

#0  0x00007ffff5e9f909 in ??? () at /usr/lib/libc.so.6
#1  0x00007ffff5ea2379 in pthread_cond_wait () at /usr/lib/libc.so.6
#2  0x00007ffff64eddf5 in QWaitConditionPrivate::wait (deadline=..., this=0x5555559296a0) at thread/qwaitcondition_unix.cpp:146
#3  QWaitCondition::wait (this=this@entry=0x555555929670, mutex=mutex@entry=0x555555929668, deadline=...) at thread/qwaitcondition_unix.cpp:225
#4  0x00007ffff7bdf3d7 in QDBusPendingCallPrivate::waitForFinished (this=0x555555929630) at /usr/src/debug/qt5-base/kde-qtbase/src/dbus/qdbuspendingcall.cpp:240
#5  0x00007ffff7bad76f in QDBusConnectionPrivate::sendWithReply (this=0x7fffec011eb0, message=<optimized out>, sendMode=1, timeout=<optimized out>)
    at /usr/src/debug/qt5-base/kde-qtbase/src/dbus/qdbusintegrator.cpp:2088
#6  0x00007ffff7ba1eec in QDBusConnection::call (this=0x555555d04118, message=<optimized out>, mode=<optimized out>, timeout=<optimized out>)
    at /usr/src/debug/qt5-base/kde-qtbase/src/dbus/qdbusconnection.cpp:680
#7  0x00007ffff7bb493f in QDBusAbstractInterface::callWithArgumentList (this=this@entry=0x5555558c4180, mode=QDBus::Block, 
    mode@entry=QDBus::AutoDetect, method=..., args=...) at /usr/src/debug/qt5-base/kde-qtbase/src/dbus/qdbusabstractinterface.cpp:494
#8  0x00007ffff7bb521f in QDBusAbstractInterface::doCall
    (this=this@entry=0x5555558c4180, mode=mode@entry=QDBus::AutoDetect, method=..., args=args@entry=0x0, numArgs=numArgs@entry=0)
    at /usr/src/debug/qt5-base/kde-qtbase/src/dbus/qdbusabstractinterface.cpp:921
#9  0x000055555557c3b4 in QDBusAbstractInterface::call (method=..., mode=QDBus::AutoDetect, this=0x5555558c4180)
    at /usr/include/qt/QtDBus/qdbusabstractinterface.h:116
#10 MainWindow::callDbusMethod (this=this@entry=0x5555556d9c20, method=..., ifaceName=ifaceName@entry=sysdMgr, bus=bus@entry=sys, args=...)
    at /usr/src/debug/systemdgenie/systemdgenie-0.99.0/src/mainwindow.cpp:1780
#11 0x000055555557f337 in MainWindow::getUnitsFromDbus (this=0x5555556d9c20, bus=sys) at /usr/src/debug/systemdgenie/systemdgenie-0.99.0/src/mainwindow.cpp:1675
#12 0x0000555555576f57 in MainWindow::slotRefreshUnitsList (this=0x5555556d9c20, initial=false, bus=<optimized out>)
    at /usr/src/debug/systemdgenie/systemdgenie-0.99.0/src/mainwindow.cpp:559
#13 0x000055555556dce3 in MainWindow::qt_metacall (this=0x5555556d9c20, _c=QMetaObject::InvokeMetaMethod, _id=15, _a=0x7fffffffbe60)
    at /usr/src/debug/systemdgenie/build/src/systemdgenie_autogen/EWIEGA46WW/moc_mainwindow.cpp:298
#14 0x00007ffff7ba1866 in QDBusConnectionPrivate::deliverCall
    (this=<optimized out>, object=<optimized out>, msg=<optimized out>, metaTypes=<optimized out>, slotIdx=<optimized out>)
    at /usr/src/debug/qt5-base/kde-qtbase/src/dbus/qdbusintegrator.cpp:1001
#15 0x00007ffff66d55bc in QObject::event (this=0x5555556d9c20, e=0x7fffec02a3a0) at kernel/qobject.cpp:1347
#16 0x00007ffff7f3303e in KXmlGuiWindow::event (this=0x5555556d9c20, ev=0x7fffec02a3a0) at /usr/src/debug/kxmlgui5/kxmlgui-5.116.0/src/kxmlguiwindow.cpp:220
#17 0x00007ffff7356581 in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x5555556d9c20, e=0x7fffec02a3a0) at kernel/qapplication.cpp:3640
#18 0x00007ffff66aee98 in QCoreApplication::notifyInternal2 (receiver=0x5555556d9c20, event=0x7fffec02a3a0) at kernel/qcoreapplication.cpp:1064
#19 0x00007ffff66aef03 in QCoreApplication::sendEvent (receiver=<optimized out>, event=<optimized out>) at kernel/qcoreapplication.cpp:1462
#20 0x00007ffff66af946 in QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=0, data=0x55555559c550) at kernel/qcoreapplication.cpp:1821
#21 0x00007ffff66fa0e0 in postEventSourceDispatch (s=0x5555556fdc70) at kernel/qeventdispatcher_glib.cpp:277
#22 0x00007ffff5232559 in g_main_dispatch (context=0x7fffec000ed0) at ../glib/glib/gmain.c:3357
#23 0x00007ffff5295257 in g_main_context_dispatch_unlocked (context=0x7fffec000ed0) at ../glib/glib/gmain.c:4208
#24 g_main_context_iterate_unlocked.isra.0 (context=context@entry=0x7fffec000ed0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>)
    at ../glib/glib/gmain.c:4273
#25 0x00007ffff5231a55 in g_main_context_iteration (context=0x7fffec000ed0, may_block=1) at ../glib/glib/gmain.c:4338
#26 0x00007ffff66fe16f in QEventDispatcherGlib::processEvents (this=0x5555556fc280, flags=...) at kernel/qeventdispatcher_glib.cpp:423
#27 0x00007ffff66a6b5c in QEventLoop::exec (this=0x7fffffffc3d0, flags=..., flags@entry=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:69
#28 0x00007ffff7cb4bbe in KJob::exec (this=this@entry=0x555555cfd970) at /usr/include/qt/QtCore/qflags.h:121
#29 0x0000555555572141 in MainWindow::authServiceAction (this=this@entry=0x5555556d9c20, service=..., path=..., iface=..., method=..., args=...)
    at /usr/src/debug/systemdgenie/systemdgenie-0.99.0/src/mainwindow.cpp:845
#30 0x0000555555578018 in MainWindow::slotExecuteUnitAction (this=0x5555556d9c20, method=...)
    at /usr/src/debug/systemdgenie/systemdgenie-0.99.0/src/mainwindow.cpp:1236
#31 0x00007ffff66e359e in QtPrivate::QSlotObjectBase::call
    (this=0x5555558fb990, r=0x5555556d9c20, a=0x7fffffffc6a0, this=<optimized out>, r=<optimized out>, a=<optimized out>)
    at ../../include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:398
#32 doActivate<false> (sender=0x5555558f5330, signal_index=4, argv=0x7fffffffc6a0) at kernel/qobject.cpp:3925
#33 0x00007ffff66e3f8d in QSignalMapper::mapped (this=this@entry=0x5555558f5330, _t1=...) at .moc/moc_qsignalmapper.cpp:231
#34 0x00007ffff66e4158 in QSignalMapperPrivate::emitMappedValue<void (QSignalMapper::*)(QString const&), QHash<QObject*, QString> >
    (this=0x5555558f5350, sender=0x55555590d520, signal=(void (QSignalMapper::*)(QSignalMapper * const, const QString &)) 0x7ffff66e3dd0 <QSignalMapper::mappedString(QString const&)>, mappedValues=...) at kernel/qsignalmapper.cpp:67
#35 QSignalMapperPrivate::emitMappedValues (this=0x5555558f5350, sender=0x55555590d520) at kernel/qsignalmapper.cpp:77
#36 QSignalMapper::map (this=<optimized out>, sender=0x55555590d520) at kernel/qsignalmapper.cpp:288
#37 0x00007ffff66e359e in QtPrivate::QSlotObjectBase::call
    (this=0x55555590dab0, r=0x5555558f5330, a=0x7fffffffc7e0, this=<optimized out>, r=<optimized out>, a=<optimized out>)
    at ../../include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:398
#38 doActivate<false> (sender=0x55555590d520, signal_index=4, argv=0x7fffffffc7e0) at kernel/qobject.cpp:3925
#39 0x00007ffff7349305 in QAction::triggered (this=this@entry=0x55555590d520, _t1=<optimized out>) at .moc/moc_qaction.cpp:376
#40 0x00007ffff734f030 in QAction::activate (this=0x55555590d520, event=<optimized out>) at kernel/qaction.cpp:1161
#41 0x00007ffff74e168b in QMenuPrivate::activateCausedStack
    (this=this@entry=0x555555b90760, causedStack=..., action=action@entry=0x55555590d520, action_e=action_e@entry=QAction::Trigger, self=self@entry=true)
    at widgets/qmenu.cpp:1384
#42 0x00007ffff74e17b4 in QMenuPrivate::activateAction (this=0x555555b90760, action=0x55555590d520, action_e=QAction::Trigger, self=true) at widgets/qmenu.cpp:1461
#43 0x00007ffff7390046 in QWidget::event (this=0x555555b90370, event=0x7fffffffce10) at kernel/qwidget.cpp:8671
#44 0x00007ffff7356581 in QApplicationPrivate::notify_helper (this=this@entry=0x5555555b43b0, receiver=receiver@entry=0x555555b90370, e=e@entry=0x7fffffffce10)
    at kernel/qapplication.cpp:3640
#45 0x00007ffff735c3e1 in QApplication::notify (this=<optimized out>, receiver=0x555555b90370, e=0x7fffffffce10) at kernel/qapplication.cpp:3084
#46 0x00007ffff66aee98 in QCoreApplication::notifyInternal2 (receiver=0x555555b90370, event=0x7fffffffce10) at kernel/qcoreapplication.cpp:1064
#47 0x00007ffff66aef23 in QCoreApplication::sendSpontaneousEvent (receiver=<optimized out>, event=<optimized out>) at kernel/qcoreapplication.cpp:1474
#48 0x00007ffff735a0f5 in QApplicationPrivate::sendMouseEvent
    (receiver=0x555555b90370, event=0x7fffffffce10, alienWidget=<optimized out>, nativeWidget=0x555555b90370, buttonDown=<optimized out>, lastMouseReceiver=..., spontaneous=true, onlyDispatchEnterLeave=false) at kernel/qapplication.cpp:2622
#49 0x00007ffff73aa055 in QWidgetWindow::handleMouseEvent (this=this@entry=0x555555c8dac0, event=event@entry=0x7fffffffd190) at kernel/qwidgetwindow.cpp:580
#50 0x00007ffff73ab817 in QWidgetWindow::event (this=0x555555c8dac0, event=0x7fffffffd190) at kernel/qwidgetwindow.cpp:300
#51 0x00007ffff7356581 in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x555555c8dac0, e=0x7fffffffd190) at kernel/qapplication.cpp:3640
#52 0x00007ffff66aee98 in QCoreApplication::notifyInternal2 (receiver=0x555555c8dac0, event=0x7fffffffd190) at kernel/qcoreapplication.cpp:1064
#53 0x00007ffff66aef23 in QCoreApplication::sendSpontaneousEvent (receiver=<optimized out>, event=<optimized out>) at kernel/qcoreapplication.cpp:1474
#54 0x00007ffff6b3c260 in QGuiApplicationPrivate::processMouseEvent (e=0x555555c9e780) at kernel/qguiapplication.cpp:2285
#55 0x00007ffff6b1d2cd in QWindowSystemInterface::sendWindowSystemEvents (flags=flags@entry=...) at kernel/qwindowsysteminterface.cpp:1169
#56 0x00007ffff1ceaad8 in xcbSourceDispatch (source=<optimized out>) at /usr/src/debug/qt5-base/kde-qtbase/src/plugins/platforms/xcb/qxcbeventdispatcher.cpp:105
#57 0x00007ffff5232559 in g_main_dispatch (context=0x7fffec000ed0) at ../glib/glib/gmain.c:3357
#58 0x00007ffff5295257 in g_main_context_dispatch_unlocked (context=0x7fffec000ed0) at ../glib/glib/gmain.c:4208
#59 g_main_context_iterate_unlocked.isra.0 (context=context@entry=0x7fffec000ed0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>)
    at ../glib/glib/gmain.c:4273
#60 0x00007ffff5231a55 in g_main_context_iteration (context=0x7fffec000ed0, may_block=1) at ../glib/glib/gmain.c:4338
#61 0x00007ffff66fe16f in QEventDispatcherGlib::processEvents (this=0x5555556fc280, flags=...) at kernel/qeventdispatcher_glib.cpp:423
#62 0x00007ffff66a6b5c in QEventLoop::exec (this=0x7fffffffd550, flags=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:69
#63 0x00007ffff66b305d in QCoreApplication::exec () at ../../include/QtCore/../../src/corelib/global/qflags.h:121
#64 0x00007ffff6b2f7ff in QGuiApplication::exec () at kernel/qguiapplication.cpp:1870
#65 0x00007ffff7354a2a in QApplication::exec () at kernel/qapplication.cpp:2832
#66 0x0000555555568d80 in main (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/systemdgenie/systemdgenie-0.99.0/src/main.cpp:79
Comment 3 Thomas Bertels 2025-03-31 09:30:10 UTC
This should get fixed by https://invent.kde.org/system/systemdgenie/-/merge_requests/15 (version 1.0.0)
Comment 4 TraceyC 2025-03-31 19:46:53 UTC
The fix was merged 22-Feb. If you still see the hang, please re-open this report. Thanks.