This is an application which uses KStatusNotifierItem to place an icon in the system tray. When run in a full desktop session everything works as expected. If, however, it is run without access to the DBus session bus (e.g. by another user over an SSH session), there is an endless loop of error messages: KStatusNotifierItemDBus::KStatusNotifierItemDBus: service is "org.kde.StatusNotifierItem-26078-464" KStatusNotifierItemPrivate::registerToDaemon: Registering a client interface to the KStatusNotifierWatcher KStatusNotifierItemPrivate::registerToDaemon: KStatusNotifierWatcher not reachable QSystemTrayIcon::setVisible: QSystemTrayIcon::setVisible: No Icon set The CPU runs at 100% and the application memory grows until OOM killed. Running under GDB with a breakpoint at KStatusNotifierItemPrivate::registerToDaemon, after a few loops, gives the following backtrace: #0 KStatusNotifierItemPrivate::registerToDaemon (this=this@entry=0x72d9c0) at /ws/frameworks/tier3/knotifications/src/kstatusnotifieritem.cpp:726 #1 0x00007ffff794aebf in KStatusNotifierItemPrivate::init (this=this@entry=0x72d9c0, extraId=...) at /ws/frameworks/tier3/knotifications/src/kstatusnotifieritem.cpp:722 #2 0x00007ffff794b2ce in KStatusNotifierItem::KStatusNotifierItem (this=0x72cea0, parent=<optimized out>) at /ws/frameworks/tier3/knotifications/src/kstatusnotifieritem.cpp:55 #3 0x00007fffe4fe4837 in KDEPlatformSystemTrayIcon::init (this=0x72c9d0) at /ws/frameworks/tier4/frameworkintegration/src/platformtheme/kdeplatformsystemtrayicon.cpp:270 #4 0x00007ffff4c38be1 in QSystemTrayIconPrivate::install_sys_qpa (this=this@entry=0x72d660) at util/qsystemtrayicon.cpp:684 #5 0x00007ffff4c58a3e in QSystemTrayIconPrivate::install_sys (this=this@entry=0x72d660) at util/qsystemtrayicon_x11.cpp:280 #6 0x00007ffff4c38838 in QSystemTrayIcon::setVisible (this=<optimized out>, visible=visible@entry=true) at util/qsystemtrayicon.cpp:271 #7 0x00007ffff7948a15 in show (this=<optimized out>) at /usr/kde5/include/QtWidgets/qsystemtrayicon.h:95 #8 KStatusNotifierItemPrivate::setLegacySystemTrayEnabled (this=this@entry=0x7340a0, enabled=enabled@entry=true) at /ws/frameworks/tier3/knotifications/src/kstatusnotifieritem.cpp:808 #9 0x00007ffff7949a24 in KStatusNotifierItemPrivate::registerToDaemon ( this=this@entry=0x7340a0) at /ws/frameworks/tier3/knotifications/src/kstatusnotifieritem.cpp:744 #10 0x00007ffff794aebf in KStatusNotifierItemPrivate::init (this=this@entry=0x7340a0, extraId=...) at /ws/frameworks/tier3/knotifications/src/kstatusnotifieritem.cpp:722 #11 0x00007ffff794b2ce in KStatusNotifierItem::KStatusNotifierItem (this=0x733450, parent=<optimized out>) at /ws/frameworks/tier3/knotifications/src/kstatusnotifieritem.cpp:55 #12 0x00007fffe4fe4837 in KDEPlatformSystemTrayIcon::init (this=0x732f00) at /ws/frameworks/tier4/frameworkintegration/src/platformtheme/kdeplatformsystemtrayicon.cpp:270 #13 0x00007ffff4c38be1 in QSystemTrayIconPrivate::install_sys_qpa (this=this@entry=0x733f70) at util/qsystemtrayicon.cpp:684 #14 0x00007ffff4c58a3e in QSystemTrayIconPrivate::install_sys (this=this@entry=0x733f70) at util/qsystemtrayicon_x11.cpp:280 #15 0x00007ffff4c38838 in QSystemTrayIcon::setVisible (this=<optimized out>, visible=visible@entry=true) at util/qsystemtrayicon.cpp:271 #16 0x00007ffff7948a15 in show (this=<optimized out>) at /usr/kde5/include/QtWidgets/qsystemtrayicon.h:95 #17 KStatusNotifierItemPrivate::setLegacySystemTrayEnabled (this=this@entry=0x6f6260, enabled=enabled@entry=true) at /ws/frameworks/tier3/knotifications/src/kstatusnotifieritem.cpp:808 #18 0x00007ffff7949a24 in KStatusNotifierItemPrivate::registerToDaemon ( this=this@entry=0x6f6260) at /ws/frameworks/tier3/knotifications/src/kstatusnotifieritem.cpp:744 #19 0x00007ffff794aebf in KStatusNotifierItemPrivate::init (this=this@entry=0x6f6260, extraId=...) at /ws/frameworks/tier3/knotifications/src/kstatusnotifieritem.cpp:722 #20 0x00007ffff794b2ce in KStatusNotifierItem::KStatusNotifierItem (this=0x6ee860, parent=<optimized out>) at /ws/frameworks/tier3/knotifications/src/kstatusnotifieritem.cpp:55 #21 0x0000000000411203 in SystemTrayWidget::SystemTrayWidget (this=0x6ee860, parent=0x6c9330) at /ws/jjm-kde5/consoleviewer/src/systemtraywidget.cpp:51 ---Type <return> to continue, or q <return> to quit--- It seems that KStatusNotifierItemPrivate::registerToDaemon(), if the DBus connection fails, tries to do: setLegacySystemTrayEnabled(true) QSystemTrayIcon::show() KDEPlatformSystemTrayIcon::init() new KStatusNotifierItem() // infinite recursion! Running a system tray application in this situation used to work in KDE4. Reproducible: Always Steps to Reproduce: 1. Run a system tray application with DBUS_SESSION_BUS_ADDRESS set correctly. Observe correct behaviour. 2. Run the same application with DBUS_SESSION_BUS_ADDRESS set to a rubbish value (not unset, because this means the same as autolaunch). Observe the infinite loop.
Bug 350288 has a different backtrace, but also mentions possible recursion.
*** This bug has been marked as a duplicate of bug 350785 ***