From 63af8ec414b1a804907df9a65c767702f578192b Mon Sep 17 00:00:00 2001 From: locpham Date: Sun, 9 Aug 2026 08:51:21 +0000 Subject: [PATCH] fix: khong panic khi spawn engine fail (UI khong thoat) + spawn.log chan doan (path + exists) + giu SF_PARENT_PID --- src-tauri/src/lib.rs | 36 ++++++++++++++++++++++++++++-------- 1 file changed, 28 insertions(+), 8 deletions(-) diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index 9935ff8..deaac70 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -25,15 +25,35 @@ pub fn run() { } else { engine_dir.join("daw_engine") }; - let (_rx, child) = app - .shell() - .command(engine_exe) + // Ghi log spawn de chan doan (UI khong duoc panic/thoat — chi log) + let log_line = format!( + "spawn daw_engine: {} exists={}\n", + engine_exe.display(), + engine_exe.exists() + ); + if let Some(mut f) = std::fs::OpenOptions::new() + .create(true) + .append(true) + .open(engine_dir.join("spawn.log")) + .ok() + { + use std::io::Write; + let _ = f.write_all(log_line.as_bytes()); + } + match app.shell().command(&engine_exe) .env("SF_PARENT_PID", std::process::id().to_string()) - .spawn() - .expect("Failed to spawn daw_engine (onedir resource) — run build_windows.ps1 first"); - - app.manage(EngineProcess(Mutex::new(Some(child)))); - println!("Python Background Engine started (localhost:8000, auto-fallback 8000-8010)"); + .spawn() { + Ok((_rx, child)) => { + app.manage(EngineProcess(Mutex::new(Some(child)))); + println!("Python Background Engine started (localhost:8000, auto-fallback 8000-8010)"); + } + Err(e) => { + // Khong panic: UI van mo, engine loi se hien trong UI loader + // ("Khong tim thay SonicForge Engine"). Log ro de chan doan. + println!("Failed to spawn daw_engine: {e}"); + app.manage(EngineProcess(Mutex::new(None))); + } + } Ok(()) }) .on_window_event(|window, event| {