Commit 8c0fbf3
committed
fix: honor timeout when a grandchild keeps the pipes open
Running a command with a timeout could hang forever, e.g.
local["sh"]["-c", "sleep 30 & wait"](timeout=1).
The timeout thread kills the direct child, but run_proc waits in
proc.communicate(), which returns only on EOF of the pipes. A grandchild
that inherited stdout/stderr keeps them open, so communicate() blocks
indefinitely even though the child is already dead and _timed_out is set.
communicate() now receives the timeout so the wait is bounded; on
expiry the process is killed, reaped, and verify() raises
ProcessTimedOut as usual. Popen-like objects that do not accept a
timeout argument fall back to the previous behavior.
Closes #6851 parent 500cfb6 commit 8c0fbf3
2 files changed
Lines changed: 44 additions & 3 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | | - | |
| 3 | + | |
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
7 | 7 | | |
8 | 8 | | |
9 | 9 | | |
| 10 | + | |
10 | 11 | | |
11 | 12 | | |
12 | 13 | | |
| |||
18 | 19 | | |
19 | 20 | | |
20 | 21 | | |
21 | | - | |
22 | 22 | | |
23 | 23 | | |
24 | 24 | | |
| |||
397 | 397 | | |
398 | 398 | | |
399 | 399 | | |
| 400 | + | |
| 401 | + | |
| 402 | + | |
| 403 | + | |
| 404 | + | |
| 405 | + | |
| 406 | + | |
| 407 | + | |
| 408 | + | |
| 409 | + | |
| 410 | + | |
| 411 | + | |
| 412 | + | |
| 413 | + | |
| 414 | + | |
| 415 | + | |
| 416 | + | |
| 417 | + | |
| 418 | + | |
| 419 | + | |
| 420 | + | |
| 421 | + | |
| 422 | + | |
| 423 | + | |
| 424 | + | |
| 425 | + | |
| 426 | + | |
| 427 | + | |
400 | 428 | | |
401 | 429 | | |
402 | 430 | | |
| |||
426 | 454 | | |
427 | 455 | | |
428 | 456 | | |
429 | | - | |
| 457 | + | |
430 | 458 | | |
431 | 459 | | |
432 | 460 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
621 | 621 | | |
622 | 622 | | |
623 | 623 | | |
| 624 | + | |
| 625 | + | |
| 626 | + | |
| 627 | + | |
| 628 | + | |
| 629 | + | |
| 630 | + | |
| 631 | + | |
| 632 | + | |
| 633 | + | |
| 634 | + | |
| 635 | + | |
| 636 | + | |
624 | 637 | | |
625 | 638 | | |
626 | 639 | | |
| |||
0 commit comments