Commit b2fb25b
committed
fix CRITICAL: zombie process on tool execution timeout (ToolExecutionSandbox.ts)
The old code used Promise.race between a streamPromise and a timeout. When
timeout won, streamPromise was abandoned but its for-await loop continued
indefinitely (zombie). Then a second concurrent for-await stream was started
on the same command, causing duplicate/interleaved output.
Fix: replaced Promise.race + abandoned promise with explicit AbortController
and a single for-await loop that checks abort signal on each iteration.
Timeout clears the loop properly. Background task still starts on timeout.1 parent 391362b commit b2fb25b
1 file changed
Lines changed: 11 additions & 10 deletions
Lines changed: 11 additions & 10 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
252 | 252 | | |
253 | 253 | | |
254 | 254 | | |
255 | | - | |
| 255 | + | |
| 256 | + | |
| 257 | + | |
| 258 | + | |
256 | 259 | | |
| 260 | + | |
257 | 261 | | |
258 | 262 | | |
259 | 263 | | |
260 | 264 | | |
261 | | - | |
262 | | - | |
263 | | - | |
264 | | - | |
265 | | - | |
266 | | - | |
267 | | - | |
268 | | - | |
| 265 | + | |
| 266 | + | |
| 267 | + | |
| 268 | + | |
| 269 | + | |
269 | 270 | | |
270 | | - | |
| 271 | + | |
271 | 272 | | |
272 | 273 | | |
273 | 274 | | |
| |||
0 commit comments