From b16dc97a8151dcd4f4cb5bd472fe10c9a7569f14 Mon Sep 17 00:00:00 2001 From: Mike Mueller Date: Wed, 6 May 2026 22:43:47 +0200 Subject: [PATCH] Debug breadcrumbs --- libs/hbb_common | 2 +- src/common.rs | 11 ++++++++--- src/rendezvous_mediator.rs | 11 ++++++++++- 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/libs/hbb_common b/libs/hbb_common index 615473157..f9f3d7747 160000 --- a/libs/hbb_common +++ b/libs/hbb_common @@ -1 +1 @@ -Subproject commit 61547315766f40f5c7ee59435e83d832da00e4a8 +Subproject commit f9f3d7747498eef12fd028e73d96d0a66302fec9 diff --git a/src/common.rs b/src/common.rs index e71615b24..321d5105b 100644 --- a/src/common.rs +++ b/src/common.rs @@ -174,9 +174,14 @@ fn install_panic_hook() { "PANIC pid={pid} exe={exe} args={args:?}\n at {location}\n payload: {payload}" ); log::error!("{header}\n backtrace:\n{backtrace}"); - let mut path = config::Config::log_path(); - let _ = std::fs::create_dir_all(&path); - path.push("panic.log"); + // Pick a fallback file path that *cannot* recursively panic. We + // intentionally don't use `Config::log_path()` here because that + // reads `APP_NAME` from a RwLock, and if the panicking thread is + // holding that lock (or the lock is poisoned by a prior panic), + // the hook would recurse and abort before writing anything. + // `temp_dir()` is a flat env-var lookup; safe to call mid-panic. + let mut path = std::env::temp_dir(); + path.push("rustdesk-panic.log"); if let Ok(mut f) = std::fs::OpenOptions::new() .create(true) .append(true) diff --git a/src/rendezvous_mediator.rs b/src/rendezvous_mediator.rs index 9bb8b400b..9d9a7ce57 100644 --- a/src/rendezvous_mediator.rs +++ b/src/rendezvous_mediator.rs @@ -689,18 +689,27 @@ impl RendezvousMediator { } async fn register_pk(&mut self, socket: Sink<'_>) -> ResultType<()> { + log::info!("breadcrumb: register_pk enter"); let mut msg_out = Message::new(); + log::info!("breadcrumb: register_pk before Config::get_key_pair"); let pk = Config::get_key_pair().1; + log::info!("breadcrumb: register_pk after Config::get_key_pair, pk_len={}", pk.len()); let uuid = hbb_common::get_uuid(); + log::info!("breadcrumb: register_pk after get_uuid, uuid_len={}", uuid.len()); let id = Config::get_id(); + log::info!("breadcrumb: register_pk after get_id, id={id}"); + let no_register = Config::no_register_device(); + log::info!("breadcrumb: register_pk after no_register_device={no_register}"); msg_out.set_register_pk(RegisterPk { id, uuid: uuid.into(), pk: pk.into(), - no_register_device: Config::no_register_device(), + no_register_device: no_register, ..Default::default() }); + log::info!("breadcrumb: register_pk before socket.send"); socket.send(&msg_out).await?; + log::info!("breadcrumb: register_pk after socket.send"); SENT_REGISTER_PK.store(true, Ordering::SeqCst); Ok(()) }