mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
89dd10b06e
There is a race condition in pkg/archive when using `cmd.Start` for pigz and xz where the `*bufio.Reader` could be returned to the pool while the command is still writing to it, and then picked up and used by a new command. The command is wrapped in a `CommandContext` where the process will be killed when the context is cancelled, however this is not instantaneous, so there's a brief window while the command is still running but the `*bufio.Reader` was already returned to the pool. wrapReadCloser calls `cancel()`, and then `readBuf.Close()` which eventually returns the buffer to the pool. However, because cmdStream runs `cmd.Wait` in a go routine that we never wait for to finish, it is not safe to return the reader to the pool yet. We need to ensure we wait for `cmd.Wait` to finish! Signed-off-by: Stephen Benjamin <stephen@redhat.com> |
||
---|---|---|
.. | ||
testdata | ||
archive.go | ||
archive_linux.go | ||
archive_linux_test.go | ||
archive_other.go | ||
archive_test.go | ||
archive_unix.go | ||
archive_unix_test.go | ||
archive_windows.go | ||
archive_windows_test.go | ||
changes.go | ||
changes_linux.go | ||
changes_other.go | ||
changes_posix_test.go | ||
changes_test.go | ||
changes_unix.go | ||
changes_windows.go | ||
copy.go | ||
copy_unix.go | ||
copy_unix_test.go | ||
copy_windows.go | ||
diff.go | ||
diff_test.go | ||
example_changes.go | ||
README.md | ||
time_linux.go | ||
time_unsupported.go | ||
utils_test.go | ||
whiteouts.go | ||
wrap.go | ||
wrap_test.go |
This code provides helper functions for dealing with archive files.