GPU: RTX 5090, driver 610.57.04 and 615.71.09 (both affected)
OS: Manjaro, kernel 7.2.9-1-MANJARO, Wayland, X11 also affected, 48 GB RAM
Displays: 3840x2160 @ 240 Hz, 1920x1080 @ 60, 2560x1440 @ 60
Application: RimWorld 1.6 (Unity 2022.3.35f1), native Linux build, OpenGL 4.5
Problem
Exactly 10 minutes after launch, the process RAM grows very quickly over about 10–40 seconds and isn’t freed until the game exits. It happens on the main menu and in game and happens only once. The size scales with the amount of loaded GPU data. And VRAM doesn’t change.
Only 2 Images due to post limit.
Vanilla game no DLC: grows about 250 MB
With all DLC: grows about 600 MB
Large mod list: grows about 13-18 GB, almost doubling total process RAM, and the process is often killed by the system’s OOM killer.
Large mod list using -force-vulkan: Stable, no spike. (Heaptrack doesn’t show all allocations, but manually tracking with top shows memory stays normal at 22 GB.)
Heaptrack:
The new memory is allocated by a thread created by the NVIDIA driver. Its call stack begins in libc, which calls directly into libnvidia-glcore.so, which then calls malloc. No Unity or RimWorld code appears on the stack.
Heaptrack (github(dot)com/KDE/heaptrack), open with heaptrack_gui <file>
RimworldLinuxAllDLCNoModsOpenGL.tar.gz (71.9 MB)
Thread monitoring (top -H):
In the rimworld process, a thread named CPMMListener exists from launch and stays idle. At exactly 10 minutes it wakes, runs at 100% of one CPU core while RAM grows (for example, 17 GB to 30 GB in 10 seconds), then goes idle again. The string CPMMListener is found in libnvidia-glcore.
rimworldthreads.log (1006.2 KB): top -H thread log covering the sudden increase ( Shows CPMMListener thread waking up on line num 11986)
Perf on the CPMMListener thread for 30 seconds, during the burst of memory:
The report shows ~30% of CPU time in clock_gettime called from libnvidia-glcore. About 17% in kernel page-fault handling.
perf.data and perf report text output of the CPMMListener thread
perf.data.tar.gz (593.7 KB)
perf.txt (374.1 KB)
glxgears does not create a CPMMListener thread. RimWorld (Unity) does.
Ruled out / no effect
__GL_THREADED_OPTIMIZATIONS=0
Occurs with and without -disable-compute-shaders
Forcing screen lock and system sleep to see if it’s inactivity related
Steam overlay (disabled in all tests)
Timing appears to be a clock timer, not frame-based (occurs at the same exact time with varying load times and frame rates)
Not affected
Same game with -force-vulkan
Rimworld Windows build (Direct3D 11)
Steps to reproduce
Launch native Linux RimWorld (default OpenGL renderer). A large mod list makes the ram increase easy to see, but vanilla also shows it.
Wait exactly 10 minutes from game launch.
Watch process RAM and the CPMMListener thread with top -H -p PID .
Workaround:
run the game with -force-vulkan.
Question:
What does CPMMListener do at 10 minutes, and is this growth expected? It scales with loaded GPU data and is never released.
I can’t verify this isn’t caused by how Unity or Rimworld creates or configures OpenGL. The CPMMListener thread appears to be created during startup, not created when running with Vulkan, and its not created for glxgears. I also couldn’t find another Linux native Unity game using OpenGL to reproduce this.
nvidia-bug-report.log upon request.
Thanks!

