From a0a6e13f1118ad3db52d4c851eefbcca7756e5e8 Mon Sep 17 00:00:00 2001 From: Andrew Krasnoff Date: Wed, 29 Jul 2026 00:20:58 +0200 Subject: fix: count ptmx master fds under devpts layouts (#1984) live_server_holds_one_pty_master_fd_per_pane counted only /proc//fd links resolving to exactly /dev/ptmx. On devpts setups such as WSL2 and many containers, a PTY master fd resolves to /dev/pts/ptmx instead, so the test found zero masters and failed with "had 0 ptmx master fds; expected 1" even though the server held the pane's master fd. Match both ptmx node paths; pty slaves still resolve to /dev/pts/ and stay uncounted, so the one-master-per-pane invariant is unchanged. --- tests/live_handoff.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/live_handoff.rs b/tests/live_handoff.rs index 4d81246a..832079e8 100644 --- a/tests/live_handoff.rs +++ b/tests/live_handoff.rs @@ -414,7 +414,8 @@ fn server_ptmx_fd_count(pid: u32) -> usize { entries .filter_map(Result::ok) .filter_map(|entry| fs::read_link(entry.path()).ok()) - .filter(|target| target == Path::new("/dev/ptmx")) + // ptmx master node: /dev/ptmx or /dev/pts/ptmx (devpts); slaves /dev/pts/ excluded. + .filter(|target| target == Path::new("/dev/ptmx") || target == Path::new("/dev/pts/ptmx")) .count() } @@ -443,7 +444,7 @@ fn wait_for_server_ptmx_fd_count(pid: u32, expected: usize, timeout: Duration) { } thread::sleep(Duration::from_millis(25)); } - panic!("server pid {pid} had {last_count} /dev/ptmx fds; expected {expected}"); + panic!("server pid {pid} had {last_count} ptmx master fds; expected {expected}"); } #[cfg(target_os = "linux")] -- cgit v1.2.3