Pager widget leaks memory when I switch between empty workspaces. As a bonus it often shows wrong desktop names after switch (pager is set show names as i3 assigns them), and does not show workspace until it has window on it (probably intended?) Reproducible: Always Steps to Reproduce: 1. Open some windows for pager to actually show workspaces. For example I open some windows on desktops with names "1" and "10" (I use i3wm). 2. Switch to an empty workspace, for example to desktop "2", then to another empty one several times. Actual Results: Plasmashell would allocate a huge amount of memory. A few switches and it bloated to 1.9GB, I've seen it go as large as 5GB just during this testing, its impossible to use in produciton. Additionally it also freezes while allocating memory. Expected Results: Should not leak memory and not freeze :) I've attached to plasmashell several times to see if its stuck in a loop somewhere, but all the time I'm getting different backtraces (all of them have libpagerplugin.so, with this one as most common one): #0 0x00007f2341eb4d3d in QQmlNotifier::emitNotify(QQmlNotifierEndpoint*, void**) () at /usr/lib/libQt5Qml.so.5 #1 0x00007f2341e5f02c in QQmlData::signalEmitted(QAbstractDeclarativeData*, QObject*, int, void**) () at /usr/lib/libQt5Qml.so.5 #2 0x00007f233ed9bd7c in QMetaObject::activate(QObject*, int, int, void**) () at /usr/lib/libQt5Core.so.5 #3 0x00007f22877b69db in () at /usr/lib/qt/qml/org/kde/plasma/private/pager/libpagerplugin.so #4 0x00007f22877b747f in () at /usr/lib/qt/qml/org/kde/plasma/private/pager/libpagerplugin.so #5 0x00007f233ed9b9ce in QMetaObject::activate(QObject*, int, int, void**) () at /usr/lib/libQt5Core.so.5 #6 0x00007f233ed9b9ce in QMetaObject::activate(QObject*, int, int, void**) () at /usr/lib/libQt5Core.so.5 #7 0x00007f2341a15b31 in KWindowSystem::numberOfDesktopsChanged(int) () at /usr/lib/libKF5WindowSystem.so.5 #8 0x00007f232c374f97 in () at /usr/lib/qt/plugins/kf5/org.kde.kwindowsystem.platforms/KF5WindowSystemX11Plugin.so #9 0x00007f233ed6d37f in QAbstractEventDispatcher::filterNativeEvent(QByteArray const&, void*, long*) () at /usr/lib/libQt5Core.so.5 #10 0x00007f232feedc14 in QXcbConnection::handleXcbEvent(xcb_generic_event_t*) () at /usr/lib/libQt5XcbQpa.so.5 #11 0x00007f232feee8a5 in QXcbConnection::processXcbEvents() () at /usr/lib/libQt5XcbQpa.so.5 #12 0x00007f233ed9c4b9 in QObject::event(QEvent*) () at /usr/lib/libQt5Core.so.5 #13 0x00007f233fcdae0c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib/libQt5Widgets.so.5 #14 0x00007f233fce2581 in QApplication::notify(QObject*, QEvent*) () at /usr/lib/libQt5Widgets.so.5 #15 0x00007f233ed6fde0 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib/libQt5Core.so.5 #16 0x00007f233ed7256d in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () at /usr/lib/libQt5Core.so.5 #17 0x00007f233edc4303 in () at /usr/lib/libQt5Core.so.5 #18 0x00007f233976b587 in g_main_context_dispatch () at /usr/lib/libglib-2.0.so.0 #19 0x00007f233976b7f0 in () at /usr/lib/libglib-2.0.so.0 #20 0x00007f233976b89c in g_main_context_iteration () at /usr/lib/libglib-2.0.so.0 #21 0x00007f233edc470f in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/libQt5Core.so.5 #22 0x00007f233ed6e23a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/libQt5Core.so.5 #23 0x00007f233ed7673c in QCoreApplication::exec() () at /usr/lib/libQt5Core.so.5 #24 0x000000000041c762 in () #25 0x00007f233e3e3291 in __libc_start_main () at /usr/lib/libc.so.6 #26 0x000000000041caea in _start ()
I can't reproduce any of these problems, including the desktops-not-shown. Can you try if this is specific with i3 or also happens with kwin for you?
No, it actually shows empty desktops, it just takes a while to unfreeze and update widget. Thing is, with KWin virtual desktops are never empty -- each have that weird "Plasma Shell -- Desktop" window on them with wallpaper and widgets, so you can switch away and leave that one existing but "empty." i3wm destroys desktop if it has no windows and user switches away from it. So I tried that with KWin. Strange thing you can't switch to non-existing desktop and create it automatically -- you have to Ctrl+F8 and mouse-click "+" :D And I did that: created 20 desktops, destroyed them, created them again and it froze. I switched tty and plasmashell was at 2.451g VmRSS. When it unfroze KWin was active, but the screen was black (it exhausted 4GB VRAM?); KWin setup is affected too. Another thing: with each creation-destruction of desktop it allocates larger chunks of memory and freezes for longer. I have Nvidia 980 with 370.28, i3 does not have compositor, KWin shoves down my throat compositing, can't have it any other way.
The original bug report was written on the machine with Iris Pro, so that rules out driver issues.
Dear Bug Submitter, This bug has been in NEEDSINFO status with no change for at least 15 days. Please provide the requested information as soon as possible and set the bug status as REPORTED. Due to regular bug tracker maintenance, if the bug is still in NEEDSINFO status with no change in 30 days, the bug will be closed as RESOLVED > WORKSFORME due to lack of needed information. For more information about our bug triaging procedures please read the wiki located here: https://community.kde.org/Guidelines_and_HOWTOs/Bug_triaging If you have already provided the requested information, please set the bug status as REPORTED so that the KDE team knows that the bug is ready to be confirmed. Thank you for helping us make KDE software even better for everyone!
Can't reproduce anymore in any form with Plasma 5.14.0 and Qt 5.11.2.
Thanks for the update; changing status.