[PR #66] [MERGED] fix(mounts): keep socket/runtime-dir binds shared so Wolf audio works #66

Closed
opened 2026-10-15 12:51:45 +00:00 by bsakaguchi · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/games-on-whales/LXC2Docker/pull/66
Author: @JBailes
Created: 6/6/2026
Status: ✅ Merged
Merged: 6/6/2026
Merged by: @JBailes

Base: main ← Head: fix/socket-dir-shared-propagation


📝 Commits (1)

  • 99ffff7 fix(mounts): keep socket/runtime-dir binds shared so Wolf audio works

📊 Changes

2 files changed (+9 additions, -5 deletions)

View changed files

📝 internal/lxc/config.go (+6 -2)
📝 internal/lxc/config_test.go (+3 -3)

📄 Description

Problem

Selecting any app (incl. Wolf UI) in Moonlight crashes the session:
[PULSE] Unable to connect / pulsesrc ... Failed to connect: Connection refused → [GSTREAMER] Pipeline error → session torn down. On the host, the PulseAudio socket never appears in the shared runtime dir (/run/user/wolf is empty).

Cause

#63 added rprivate propagation to all daemon-emitted binds, including the runtime-dir and socket-dir binds. Those are exactly how Wolf, the PulseAudio container, and session containers share the pulse (and Wayland) sockets — pre-#63 they inherited the host's shared propagation, so a socket created under XDG_RUNTIME_DIR after the mount propagated to siblings. With rprivate the socket never reaches the session.

#63's real goal — stop a container's devpts from clobbering the host's /dev/pts — only needs the device node/dir binds to be rprivate, which this keeps.

Fix

Revert just the socket/runtime-dir mounts in appendSocketMount and appendSocketDirMount to shared propagation. Device node/dir binds stay rprivate. Tests updated to match.

Verification

  • go test ./internal/lxc/ passes.
  • Deployed on the Proxmox CT path: pulse-socket reappears in the shared host runtime dir and Wolf UI sessions connect again.

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/games-on-whales/LXC2Docker/pull/66 **Author:** [@JBailes](https://github.com/JBailes) **Created:** 6/6/2026 **Status:** ✅ Merged **Merged:** 6/6/2026 **Merged by:** [@JBailes](https://github.com/JBailes) **Base:** `main` ← **Head:** `fix/socket-dir-shared-propagation` --- ### 📝 Commits (1) - [`99ffff7`](https://github.com/games-on-whales/LXC2Docker/commit/99ffff7d48e4a5d87322c10ebb47e72ca37f005a) fix(mounts): keep socket/runtime-dir binds shared so Wolf audio works ### 📊 Changes **2 files changed** (+9 additions, -5 deletions) <details> <summary>View changed files</summary> 📝 `internal/lxc/config.go` (+6 -2) 📝 `internal/lxc/config_test.go` (+3 -3) </details> ### 📄 Description ## Problem Selecting any app (incl. Wolf UI) in Moonlight crashes the session: `[PULSE] Unable to connect` / `pulsesrc ... Failed to connect: Connection refused` → `[GSTREAMER] Pipeline error` → session torn down. On the host, the PulseAudio socket never appears in the shared runtime dir (`/run/user/wolf` is empty). ## Cause #63 added `rprivate` propagation to **all** daemon-emitted binds, including the runtime-dir and socket-dir binds. Those are exactly how Wolf, the PulseAudio container, and session containers **share** the pulse (and Wayland) sockets — pre-#63 they inherited the host's shared propagation, so a socket created under `XDG_RUNTIME_DIR` after the mount propagated to siblings. With `rprivate` the socket never reaches the session. #63's real goal — stop a container's devpts from clobbering the host's `/dev/pts` — only needs the **device** node/dir binds to be `rprivate`, which this keeps. ## Fix Revert just the socket/runtime-dir mounts in `appendSocketMount` and `appendSocketDirMount` to shared propagation. Device node/dir binds stay `rprivate`. Tests updated to match. ## Verification - `go test ./internal/lxc/` passes. - Deployed on the Proxmox CT path: `pulse-socket` reappears in the shared host runtime dir and Wolf UI sessions connect again. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
bsakaguchi 2026-10-15 12:51:45 +00:00
Sign in to join this conversation.
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
games-on-whales/LXC2Docker#66
No description provided.