Skip to content

fix(acp): clean up stdin listeners via ReadableStream cancel and named handlers#1348

Open
walker83 wants to merge 1 commit into
XiaomiMiMo:mainfrom
walker83:fix/acp-stdin-cleanup
Open

fix(acp): clean up stdin listeners via ReadableStream cancel and named handlers#1348
walker83 wants to merge 1 commit into
XiaomiMiMo:mainfrom
walker83:fix/acp-stdin-cleanup

Conversation

@walker83

Copy link
Copy Markdown

Summary

Fix two groups of stdin listener leaks in the ACP command.

Leak 1: ReadableStream stdin listeners

The start() callback registered data, end, and error listeners on process.stdin with anonymous lambdas. No cleanup mechanism existed.

  • Extract named handlers
  • Add cancel() method that calls process.stdin.off() for each

Leak 2: Await promise stdin listeners

process.stdin.on("end", resolve) and process.stdin.on("error", reject) were never cleaned up after resolve/reject.

  • Extract named handlers that call process.stdin.off() for the other listener before resolving/rejecting

Changes

  • packages/opencode/src/cli/cmd/acp.ts

Checklist

  • All paths properly clean up listeners

…d handlers

Two leak fixes:

1. ReadableStream stdin listeners in start(): extract named handlers
   and add cancel() to remove them via process.stdin.off().

2. Promise stdin listeners (end/error): extract named handlers and
   call process.stdin.off() on both resolve and reject paths.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant