fix: properly cleanup Windows process tree on Obsidian exit#24
Closed
Gerkinfeltser wants to merge 2 commits intomtymek:mainfrom
Closed
fix: properly cleanup Windows process tree on Obsidian exit#24Gerkinfeltser wants to merge 2 commits intomtymek:mainfrom
Gerkinfeltser wants to merge 2 commits intomtymek:mainfrom
Conversation
Spawned shell process (cmd.exe) was being killed but orphaned the actual node.exe child. Fix uses PowerShell to find and kill child processes first, using the stored PID from before Obsidian destroys the ProcessManager. Changes: - Store server PID in main.ts separately - Add killPidSync() with PowerShell child lookup (Windows) - Add beforeunload handler for cleanup during window close - Add getPid() method to ProcessManager - Remove unused quit event handler Also added esModuleInterop to tsconfig.json and tree-kill dependency (though not used in final solution).
The test was checking for not found error message, but the actual error is Process exited unexpectedly exit code 1. Updated the assertion to check for exit code pattern which covers both cases.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
On Windows, when Obsidian is closed with the OpenCode panel open, the server process (node.exe) is not terminated and becomes an orphaned process. This happens because:
Solution
Store the PID separately in main.ts and use PowerShell to reliably find and kill child processes:
Testing
Tested on Windows 11:
Breaking Changes
None. The fix maintains backward compatibility.