diff --git a/packages/electron-app/electron/main/process-manager.ts b/packages/electron-app/electron/main/process-manager.ts index a614676a..80cbd71e 100644 --- a/packages/electron-app/electron/main/process-manager.ts +++ b/packages/electron-app/electron/main/process-manager.ts @@ -177,6 +177,9 @@ export class CliProcessManager extends EventEmitter { return new Promise((resolve) => { const killTimeout = setTimeout(() => { + console.warn( + `[cli] stop timed out after 30000ms; sending SIGKILL (pid=${child.pid ?? "unknown"})`, + ) child.kill("SIGKILL") }, 30000) diff --git a/packages/tauri-app/src-tauri/src/cli_manager.rs b/packages/tauri-app/src-tauri/src/cli_manager.rs index f0ea6938..a1b8013a 100644 --- a/packages/tauri-app/src-tauri/src/cli_manager.rs +++ b/packages/tauri-app/src-tauri/src/cli_manager.rs @@ -278,6 +278,7 @@ impl CliProcessManager { pub fn stop(&self) -> anyhow::Result<()> { let mut child_opt = self.child.lock(); if let Some(mut child) = child_opt.take() { + log_line(&format!("stopping CLI pid={}", child.id())); #[cfg(unix)] unsafe { libc::kill(child.id() as i32, libc::SIGTERM); @@ -293,6 +294,11 @@ impl CliProcessManager { Ok(Some(_)) => break, Ok(None) => { if start.elapsed() > Duration::from_secs(CLI_STOP_GRACE_SECS) { + log_line(&format!( + "stop timed out after {}s; sending SIGKILL pid={}", + CLI_STOP_GRACE_SECS, + child.id() + )); #[cfg(unix)] unsafe { libc::kill(child.id() as i32, libc::SIGKILL);