Summary
On niri, idle power-off-monitors can drop HDMI HPD. The external display then reconnects in a loop, GPU GTT fills, and the OOM killer SIGKILLs niri (taking the whole session with it).
Reproduced on an AMD GPU with HDMI. The same class of bug can hit other GPUs if DPMS tears down the HDMI link the same way.
Steps to reproduce
- niri + iNiR, internal panel + HDMI on an AMD GPU.
- Leave the session idle until
idle.screenOffTimeout fires.
- Watch
journalctl for HDMI disconnecting connector / new connector repeating every few seconds.
- After enough cycles:
kswapd0 invoked oom-killer and Out of memory: Killed process (niri).
Expected behavior
Screen-off blanks the displays without tearing down the HDMI link. Idle must not grow unreclaimable GPU memory.
Logs
niri: disconnecting connector: "HDMI-A-1"
niri: new connector: HDMI-A-1
inir: attempted to use dangling screen object
...
gpu_active:7106288kB gpu_reclaim:0kB
Free swap = 204kB
Out of memory: Killed process ... (niri) oom_score_adj:200
Dozens of HDMI disconnects in a few minutes after screen-off. iNiR RSS stayed in the hundreds of MB; the missing RAM was GPU GTT.
Environment
iNiR 2.29.1
Quickshell 0.3.1
niri 26.04
AMD GPU (iGPU, shared GTT)
Panel family
ii
Additional context
brightness sleepBegin already ignores hotplug for brightness objects (PR #193). That does not stop niri from connecting the output again, so the DRM buffers still leak. Screen-off should not call niri msg action power-off-monitors when that drops HDMI HPD.
Summary
On niri, idle
power-off-monitorscan drop HDMI HPD. The external display then reconnects in a loop, GPU GTT fills, and the OOM killer SIGKILLs niri (taking the whole session with it).Reproduced on an AMD GPU with HDMI. The same class of bug can hit other GPUs if DPMS tears down the HDMI link the same way.
Steps to reproduce
idle.screenOffTimeoutfires.journalctlfor HDMIdisconnecting connector/new connectorrepeating every few seconds.kswapd0 invoked oom-killerandOut of memory: Killed process (niri).Expected behavior
Screen-off blanks the displays without tearing down the HDMI link. Idle must not grow unreclaimable GPU memory.
Logs
Dozens of HDMI disconnects in a few minutes after screen-off. iNiR RSS stayed in the hundreds of MB; the missing RAM was GPU GTT.
Environment
Panel family
ii
Additional context
brightness sleepBeginalready ignores hotplug for brightness objects (PR #193). That does not stop niri from connecting the output again, so the DRM buffers still leak. Screen-off should not callniri msg action power-off-monitorswhen that drops HDMI HPD.