https://bugs.kde.org/show_bug.cgi?id=462202

            Bug ID: 462202
           Summary: Massive VRAM leak when using tab switcher
                    visualization with kwin_x11
    Classification: Plasma
           Product: kwin
           Version: 5.26.3
          Platform: Fedora RPMs
                OS: Linux
            Status: REPORTED
          Severity: normal
          Priority: NOR
         Component: tabbox
          Assignee: kwin-bugs-n...@kde.org
          Reporter: psb...@palant.de
  Target Milestone: ---

Created attachment 153993
  --> https://bugs.kde.org/attachment.cgi?id=153993&action=edit
Minimized problematic source code

This is a spin-off from bug 455193, just in case the root issue is a different
one.

STEPS TO REPRODUCE

1. Open top in a console
2. Select “Grid” as your tab switcher visualization (other visualizations
create smaller windows, resulting in a smaller leak)
3. Press Alt-Tab a bunch of times

OBSERVED RESULT

Each time the tab switcher visualization shows up, top shows “buff/cache” value
go up by ~40 MB, “avail Mem” value goes down by the same amount.
/proc/sys/vm/drop_caches has no effect. Eventually the entire RAM gets filled
up and the system becomes unresponsive.

Restarting kwin_x11 releases all the memory hoarded here.

As indicated in bug 455193, disabling composition by means of
QT_XCB_GL_INTEGRATION=xcb_egl makes this leak go away.

EXPECTED RESULT

Memory usage should stay stable.

SOFTWARE/OS VERSIONS
Linux: Fedora Linux 37 (didn’t happen with Fedora 36)
KDE Plasma Version: 5.26.3
KDE Frameworks Version: 5.100.0
Qt Version: 5.15.7
CPU: Intel i7-1165G7 (built-in graphics used, Nvidia GeForce present but
inactive)

ADDITIONAL INFORMATION
I took the source code of tabboxhandler.cpp and produced a reduced test case.
The leak is caused by the mere act of showing a PlasmaCore.Dialog via QML. So
the root issue is likely not in KDE but I didn’t manage to narrow it down
further so far.

Unpack the attached source code to a directory. Run the following command to
compile (qt5-qtdeclarative-devel package required):

cmake . && make

It will produce an executable called test. When you run it, it will show an
empty dialog window and hide it again repeatedly. Each such cycle leaks close
to 100 MB of memory, similarly to how task switcher visualization would do it.
As with the task switcher visualization, the way to get this memory back is
restarting kwin_x11 (killing the application is not sufficient).

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to