ValveSoftware / ValveSoftware/steam-runtime
Controller input not working with gamescope on Gentoo: pressure-vessel missing /run/host bind mount
Nobody has claimed this yet.
- Dominant language
- Shell
- Stars
- 1.5k
- Forks
- 97
- PR merge metrics
- No merged PRs in 30d
Description
Your system information
- System information from steam:
Computer Information:
Manufacturer: ASRock
Model: B850M Steel Legend WiFi
Form Factor: Desktop
No Touch Input Detected
Processor Information:
CPU Vendor: AuthenticAMD
CPU Brand: AMD Ryzen 7 9800X3D 8-Core Processor
CPU Family: 0x1a
CPU Model: 0x44
CPU Stepping: 0x0
CPU Type: 0x0
Speed: 5455 MHz
16 logical processors
8 physical processors
Hyper-threading: Supported
FCMOV: Supported
SSE2: Supported
SSE3: Supported
SSSE3: Supported
SSE4a: Supported
SSE41: Supported
SSE42: Supported
AES: Supported
AVX: Supported
AVX2: Supported
AVX512F: Supported
AVX512PF: Unsupported
AVX512ER: Unsupported
AVX512CD: Supported
AVX512VNNI: Supported
SHA: Supported
CMPXCHG16B: Supported
LAHF/SAHF: Supported
PrefetchW: Unsupported
BMI1: Supported
BMI2: Supported
F16C: Supported
FMA: Supported
Operating System Version:
"Gentoo Linux" (64 bit)
Kernel Name: Linux
Kernel Version: 6.17.0-cachyos
X Server Vendor: The X.Org Foundation
X Server Release: 12401008
X Window Manager: Hyprland :D
Steam Runtime Version: steam-runtime_1.0.20250616.139563
Client Information:
Version: 1757650573
Browser GPU Acceleration Status: Enabled
Browser Canvas: Enabled
Browser Canvas out-of-process rasterization: Enabled
Browser Direct Rendering Display Compositor: Disabled
Browser Compositing: Enabled
Browser Multiple Raster Threads: Enabled
Browser OpenGL: Enabled
Browser Rasterization: Enabled
Browser Raw Draw: Disabled
Browser Skia Graphite: Disabled
Browser Video Decode: Enabled
Browser Video Encode: Disabled
Browser Vulkan: Disabled
Browser WebGL: Enabled
Browser WebGL2: Enabled
Browser WebGPU: Disabled
Browser WebNN: Disabled
Video Card:
Driver: NVIDIA Corporation NVIDIA GeForce RTX 5070 Ti/PCIe/SSE2
Driver Version: 4.6.0 NVIDIA 580.95.05
Desktop Color Depth: 24 bits per pixel
Monitor Refresh Rate: 164 Hz
VendorID: 0x1002
DeviceID: 0x13c0
Revision Not Detected
Number of Monitors: 2
Number of Logical Video Cards: 2
Primary Display Resolution: 2560 x 1440
Desktop Resolution: 5120 x 1440
Primary Display Size: 23.62" x 13.39" (27.13" diag), 60.0cm x 34.0cm (68.9cm diag)
Primary VRAM: 16303 MB
Sound card:
Audio device: Nvidia GPU ab HDMI/DP
Memory:
RAM: 31166 Mb
VR Hardware:
VR Headset: None detected
Miscellaneous:
UI Language: English
LANG: en_US.utf8
Total Hard Disk Space Available: 936002 MB
Largest Free Hard Disk Block: 31794 MB
Storage:
Number of SSDs: 5
SSD sizes: 2000G,1000G,500G,500G,0B
Number of HDDs: 0
Number of removable drives: 0 - Have you checked for system updates?: Yes
- Distribution: Gentoo Linux
- Kernel version: 6.17.0-cachyos
- Graphics driver version: Nvidia (open) 580.95.05
- Gamescope version: 3.16.2 (any newer breaks --force-grab-cursor on Hyprland, unrelated to this issue)
Please describe your issue in as much detail as possible:
Controller input does not work in games when launching through gamescope on Gentoo Linux with Steam Input enabled. The controller works correctly:
- Without gamescope
- With gamescope when Steam Input is disabled
Steps for reproducing this issue:
- Install Gentoo Linux with standard multilib layout (/usr/lib for 32-bit, /usr/lib64 for 64-bit)
- Install Steam, gamescope, and dev-libs/libei (which provides libextest.so)
- Enable Steam Input for a controller (tested with 8BitDo Ultimate 2)
- Launch any game with gamescope using a launch option like:
gamescope -- %command% - Controller input does not work in the game
Technical Details
The root cause is that pressure-vessel attempts to preload --ld-preload=/run/host/usr/lib/libextest.so, but the /run/host directory is never created as a bind mount inside the container on Gentoo systems.
Evidence from logs (~/.local/share/Steam/logs/console-linux.txt):
ERROR: ld.so: object '/run/host/usr/lib/libextest.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
ERROR: ld.so: object '/usr/lib/libextest.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
The "wrong ELF class" errors occur because 64-bit processes are attempting to load the 32-bit /usr/lib/libextest.so when they should be loading /usr/lib64/libextest.so.
Observations:
- libextest.so exists at both
/usr/lib/libextest.so(32-bit ELF) and/usr/lib64/libextest.so(64-bit ELF) - Inside the pressure-vessel container (verified via
/proc/[PID]/root/):/usr/lib/libextest.sois visible and accessible/run/hostdirectory does not exist at all
- When launching without gamescope, pressure-vessel correctly preloads both gameoverlayrenderer.so and libextest.so
- When launching with gamescope, only libextest.so is attempted for preload, and gameoverlayrenderer.so is missing entirely
Comparison with Arch Linux:
This issue does not occur on Arch Linux with identical versions of gamescope and Hyprland, suggesting this is specific to how pressure-vessel handles Gentoo's multilib filesystem layout.
Comparison: With vs Without Gamescope
Without gamescope (controller works):
--ld-preload=/run/host/usr/lib/libextest.so
--ld-preload=/home/user/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so
--ld-preload=/home/user/.local/share/Steam/ubuntu12_64/gameoverlayrenderer.so
With gamescope (controller doesn't work):
--ld-preload=/run/host/usr/lib/libextest.so
(No gameoverlayrenderer.so preloaded, and /run/host path doesn't exist)
Proposed Solution
Either:
- Pressure-vessel should create proper
/run/host/usr/{lib,lib64}bind mounts on Gentoo's multilib layout - When the bind mount doesn't exist, fall back to using direct paths (
/usr/lib/libextest.so,/usr/lib64/libextest.so) - Ensure gameoverlayrenderer.so is still preloaded when gamescope is in the launch chain
Workaround
Disable Steam Input for games launched with gamescope. The controller works correctly using raw input.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the pressure-vessel launch and preload behavior described in the issue, then inspect the console-linux.txt comparison for launches with and without gamescope. Reproduce the missing /run/host bind mount and the ELF-class errors on Gentoo's /usr/lib and /usr/lib64 layout. Done means controller input works with Steam Input through gamescope and the required preload libraries resolve correctly.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- linux
- Domain
- infrastructure, operating-systems
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100