Hyprland version
Hyprland 0.50.1 built from branch at commit 4e242d086e20b32951fdc0ebcbfb4d41b5be8dcc dirty ([gha] Nix: update inputs).
Date: Sat Jul 19 23:37:06 2025
Tag: v0.50.1, commits: 6291
built against:
aquamarine 0.9.2
hyprlang 0.6.3
hyprutils 0.8.1
hyprcursor 0.1.12
hyprgraphics 0.1.5
no flags were set
50 lines before the log spam
[LOG] [CXDGOutputProtocol] New xdg_output for virt-1: client 564c59cb5cd0 (not xwayland)
[LOG] [CScreencopyProtocol] Bound client successfully!
[LOG] [CXDGOutputProtocol] New xdg_output for virt-1: client 564c59cb5cd0 (not xwayland)
[LOG] [CScreencopyProtocol] Bound client successfully!
[LOG] [CXDGOutputProtocol] New xdg_output for virt-1: client 564c59cb5cd0 (not xwayland)
[LOG] [AQ] [libinput] event256 - Pen passthrough: is tagged by udev as: Tablet
[LOG] [AQ] [libinput] event256 - Pen passthrough: device “Pen passthrough” (beef:dead) is not known to libwacom
[LOG] [AQ] [libinput] event256 - Pen passthrough: device is a tablet
[LOG] [AQ] libinput: New device Pen passthrough: 48879-57005
[LOG] New aquamarine tablet with name Pen passthrough
[LOG] Attached tablet pen-passthrough to global
[LOG] Setting calibration matrix for device pen-passthrough
[LOG] Binding tablet pen-passthrough to output
[LOG] [CWLCompositorResource] New wl_surface with id 30 at 564c5a018160
[LOG] [CWLCompositorResource] New wl_surface with id 30 at 564c5a017350
[LOG] [CWLCompositorResource] New wl_surface with id 30 at 564c5a01b470
[LOG] [CWLCompositorResource] New wl_surface with id 50 at 564c5a0110f0
[LOG] [CWLCompositorResource] New wl_surface with id 30 at 564c5a011570
[LOG] [CWLCompositorResource] New wl_surface with id 30 at 564c5a019480
[LOG] [CWLCompositorResource] New wl_surface with id 40 at 564c5a019900
[LOG] [CWLCompositorResource] New wl_surface with id 68 at 564c5a016560
[LOG] [AQ] [libinput] event31 - Touch passthrough: is tagged by udev as: Mouse Touchscreen
[LOG] [AQ] [libinput] event31 - Touch passthrough: device is a pointer
[LOG] [AQ] [libinput] event31 - Touch passthrough: device is a touch device
[LOG] [AQ] [libinput] event256 - touch-arbitration: activated for Pen passthrough<->Touch passthrough
[LOG] [AQ] libinput: New device Touch passthrough: 48879-57005
[LOG] New aquamarine pointer with name Touch passthrough
[LOG] New mouse has libinput sens 0.00 (0.00) with accel profile 0 (0)
[LOG] Attached pointer touch-passthrough to global
[LOG] Applied config to mouse mouse-passthrough, sens 0.00
[LOG] Applied config to mouse mouse-passthrough-(absolute), sens 0.00
[LOG] Applied config to mouse touch-passthrough, sens 0.00
[LOG] New mouse created, pointer AQ: 564c5a018810
[LOG] New aquamarine touch with name Touch passthrough
[LOG] Setting calibration matrix for device touch-passthrough-1
[ERR] Failed to bind touch device touch-passthrough-1 to output ‘[[Auto]]’: monitor not found
[LOG] Attached touch touch-passthrough-1 to global
[LOG] New touch device added at 564c59bc5df0
[LOG] cursorImage request: surface 564c5953cb10
[LOG] [CScreencopyProtocol] Bound client successfully!
[LOG] [CXDGOutputProtocol] New xdg_output for virt-1: client 564c5a018dc0 (not xwayland)
[LOG] [CScreencopyProtocol] Bound client successfully!
[LOG] [CXDGOutputProtocol] New xdg_output for virt-1: client 564c5a018dc0 (not xwayland)
[LOG] [CLinuxDMABUFParamsResource] Creating a dmabuf, with id 0: size [Vector2D: x: 2550, y: 1440], fmt XR24, planes 1
[LOG] [CLinuxDMABUFParamsResource] | plane 0: mod 0 fd 164 stride 10200 offset 0
[LOG] [CLinuxDMABUFParamsResource] Creating a dmabuf, with id 0: size [Vector2D: x: 2550, y: 1440], fmt XR24, planes 1
[LOG] [CLinuxDMABUFParamsResource] | plane 0: mod 0 fd 164 stride 10200 offset 0
[LOG] [CLinuxDMABUFParamsResource] Creating a dmabuf, with id 0: size [Vector2D: x: 2550, y: 1440], fmt XR24, planes 1
[LOG] [CLinuxDMABUFParamsResource] | plane 0: mod 0 fd 164 stride 10200 offset 0
[LOG] [CLinuxDMABUFParamsResource] Creating a dmabuf, with id 0: size [Vector2D: x: 2550, y: 1440], fmt XR24, planes 1
In case someone does not know sunshine
GitHub - LizardByte/Sunshine: Self-hosted game stream host for Moonlight.
Upon disconnecting a sunshine connection, Hyprland becomes temporarily, but entirely unresponsive (not even responding to IPC requests) and keeps an entire CPU core busy. The duration of this unresponsiveness grows with the duration of the preceding sunshine session. I assume that this is related to the following lines being repeatedly written to the Hyprland log:
[LOG] [CLinuxDMABUFParamsResource] Creating a dmabuf, with id 0: size [Vector2D: x: 2550, y: 1440], fmt XR24, planes 1
[LOG] [CLinuxDMABUFParamsResource] | plane 0: mod 0 fd 153 stride 10200 offset
The final size of the Hyprland log is consistent with the lines being written about 60 times a second, so I assume a dmabuf is created whenever sunshine captures the screen.
While the connection is open, the memory consumed by Hyprland steadily increases (going from about 250 MB to 2.5 GB within approximately 12 hours). Though this could also be caused by other factors, since I did not yet monitor the memory consumption without a sunshine connection.
The output captured is a headless
one (in case that is relevant).
I have the following theory on what happens:
Obviously, the dmabufs are not persistent. Otherwise, my PC would run out of memory in a matter of minutes or even seconds (under the assumption that a dmabuf contains an entire screen, one would consume 2550*1440*24\approx 88
MB[where MathJax ?]). However, because of the increasing memory consumption, I assume that some record of the buffers is kept. Upon the session terminating, some logic (maybe cleanup?) iterates over all these buffers, which results in the full CPU usage and Hyprland no longer responding. Since I currently do not have time to read Hyprland’s source code, I sadly cannot verify this theory, but it is the best I was able to come up with.
If my theory is correct, can you fix this on your end? Or is the issue caused by something that sunshine does wrong, which should be reported to them instead?
One additional phenomenon, which I could not quite make sense of: The duration of Hyprland not responding seems to not scale entirely linearly with the time the sunshine session is up for. After about 15 minutes, btop
does not show any spike of CPU usage and there seems to be no period of Hyprland not responding, after about 1.5 hours, CPU usage goes to 100% and Hyprland does not respond for >3 minutes.