zeripath 0dcc74a8a7
Prevent dangling cat-file calls (goroutine alternative) (#19454)
If an `os/exec.Command` is passed non `*os.File` as an input/output, go
will create `os.Pipe`s and wait for their closure in `cmd.Wait()`.  If
the code following this is responsible for closing `io.Pipe`s or other
handlers then on process death from context cancellation the `Wait` can
hang.

There are two possible solutions:

1. use `os.Pipe` as the input/output as `cmd.Wait` does not wait for these.
2. create a goroutine waiting on the context cancellation that will close the inputs.

This PR provides the second option - which is a simpler change that can
be more easily backported.

Closes #19448

Signed-off-by: Andrew Thornton <art27@cantab.net>
2022-04-22 17:20:04 +02:00
..
2022-01-20 18:46:10 +01:00
2022-03-13 17:40:47 +01:00
2022-01-20 18:46:10 +01:00
2022-04-01 02:15:46 +02:00
2022-01-20 18:46:10 +01:00
2022-01-20 18:46:10 +01:00
2020-10-02 23:37:53 -04:00
2022-01-20 18:46:10 +01:00
2022-03-18 20:17:57 +01:00
2022-01-20 18:46:10 +01:00
2022-01-19 19:31:39 -05:00
2022-01-20 18:46:10 +01:00
2022-01-20 18:46:10 +01:00
2022-04-19 12:55:35 -04:00
2022-01-20 18:46:10 +01:00
2022-01-20 18:46:10 +01:00
2022-03-30 16:42:47 +08:00
2022-01-20 18:46:10 +01:00
2021-12-20 04:41:31 +00:00
2020-04-05 07:20:50 +01:00
2022-01-20 18:46:10 +01:00