bug(process): Kill all managed Argyll subprocesses on app / window exit #149
Notifications
Due Date
No due date set.
Blocks
Reference: gronod/ICCery#149
Reference in New Issue
Block a user
Description
When the user closes the ICCery window or quits the application while any ArgyllCMS sidecar is still running, the child process is not terminated.
Issue #147 documents the Stage 3 /
chartreadcase specifically. The same gap exists for every tool managed byProcessManager(targen,printtarg,chartread,average,colprof,profcheck,iccgamut,instlist).Only the explicit Cancel path in Stage 3 calls
invoke("kill_process", { id }). There is no Tauri lifecycle hook that drains the process table on shutdown.Steps to Reproduce
chartreadactive; Cancel visible).ps, Activity Monitor, Task Manager).Expected Behaviour
ProcessManageris killed before the host exits.chartread/colprof/ etc. processes remain.Actual Behaviour
Technical Notes
Current kill path (works):
ProcessManager::kill(id)drops stdin, signals a oneshot, thenchild.start_kill()(
src-tauri/src/process_manager.rs)commands::kill_process→ above path(
src/js/chartread.js)Missing path:
src-tauri/src/lib.rsuses a bare.run(tauri::generate_context!())with noRunEvent/WindowEvent::CloseRequestedhandler.ProcessManagerhas nokill_all()helper.Suggested Fix
ProcessManager::kill_all(&self)that iterates every registered killer and signals them (and drops all stdins).lib.rs, handle shutdown, e.g.:Alternatively intercept
WindowEvent::CloseRequestedon the main window and kill before allowing close.Acceptance Criteria
chartreadleaves nochartreadprocess.kill_all(at least that the map is emptied).Dependencies