From 36dc2638f75bb271f410764dc3abc5ca50af9d58 Mon Sep 17 00:00:00 2001 From: Mariano Abad Date: Thu, 23 Jul 2026 21:59:24 -0300 Subject: [PATCH] drm: log why the uinput refresh worker could not start The worker released its coalescing slot and returned silently when the runtime failed to build, leaving the uinput range stale for the new layout with nothing in the log to explain it. --- src/server/drm_capturer.rs | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/server/drm_capturer.rs b/src/server/drm_capturer.rs index d47efdc21..ac09e322c 100644 --- a/src/server/drm_capturer.rs +++ b/src/server/drm_capturer.rs @@ -500,12 +500,21 @@ async fn recv_thread( UINPUT_REFRESH_GEN.fetch_add(1, Ordering::AcqRel); if !UINPUT_REFRESH_BUSY.swap(true, Ordering::AcqRel) { std::thread::spawn(|| { - let Ok(rt) = tokio::runtime::Builder::new_current_thread() + let rt = match tokio::runtime::Builder::new_current_thread() .enable_all() .build() - else { - UINPUT_REFRESH_BUSY.store(false, Ordering::Release); - return; + { + Ok(rt) => rt, + Err(err) => { + // Release the slot so a later topology change can retry, and say + // why: silently skipping would leave the uinput range stale for + // the new layout with nothing in the log to explain it. + log::warn!( + "drm: uinput refresh worker could not build a runtime: {err}" + ); + UINPUT_REFRESH_BUSY.store(false, Ordering::Release); + return; + } }; let mut served = 0u64; loop {