🤖 fix: check abort signal in bash tool stream consumption #541
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.
Fixes bash tool hanging when interrupted during execution by properly handling abort signals in stream consumption.
Problem
When a new message arrives while a bash command is executing, the tool should abort quickly. However, after PR #537 removed the 10ms wait workaround, the bash tool would hang if the abort signal fired while
reader.read()was blocked waiting for data. This was especially noticeable over SSH or with commands producing continuous output.The issue:
consumeStream()didn't listen for abort events, so when the process was killed but streams hadn't closed yet,reader.read()stayed blocked indefinitely.Solution
Register an abort event listener that immediately cancels the reader when abort fires:
This interrupts
reader.read()mid-operation rather than checking abort before each read (which has a race condition).Testing
Generated with
cmux