extraction/index.ts bounds every git call it makes; worktree.ts, git-hooks.ts, and the installer's npm install -g did not, so a stuck subprocess blocked the caller indefinitely. Worst case was the daemon: gitWorktreeRoot/gitCommonDir run (memoized) on the main event loop while serving MCP clients, where an unbounded git hang would trip the 60s liveness watchdog and SIGKILL a healthy daemon. git calls get 5s, the interactive npm install 120s. Regression tests assert the option through a mocked child_process plus a per-file call-site sweep. Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
713ab7af43
commit
2f70eb3d32
@@ -115,7 +115,9 @@ export async function runInstallerWithOptions(opts: RunInstallerOptions): Promis
|
||||
const s = clack.spinner();
|
||||
s.start('Installing codegraph CLI...');
|
||||
try {
|
||||
execSync('npm install -g @colbymchenry/codegraph', { stdio: 'pipe', windowsHide: true });
|
||||
// Generous bound (slow networks / cold npm cache) — but bounded, so a
|
||||
// wedged npm can't hang the interactive installer forever (#1139).
|
||||
execSync('npm install -g @colbymchenry/codegraph', { stdio: 'pipe', windowsHide: true, timeout: 120_000 });
|
||||
s.stop('Installed codegraph CLI on PATH');
|
||||
} catch {
|
||||
s.stop('Could not install (permission denied)');
|
||||
|
||||
Reference in New Issue
Block a user