diff --git a/.changelog/24244.txt b/.changelog/24244.txt new file mode 100644 index 000000000..c4668f6e6 --- /dev/null +++ b/.changelog/24244.txt @@ -0,0 +1,3 @@ +```release-note:bug +docker: Fixed a bug where alloc exec could leak a goroutine +``` diff --git a/drivers/docker/driver.go b/drivers/docker/driver.go index c2e64567d..e410cc3df 100644 --- a/drivers/docker/driver.go +++ b/drivers/docker/driver.go @@ -1836,7 +1836,11 @@ func (d *Driver) ExecTaskStreaming(ctx context.Context, taskID string, opts *dri if err != nil { return nil, fmt.Errorf("failed to attach to exec: %v", err) } - defer resp.Close() + defer func() { + opts.Stdin.Close() // close stdin + resp.CloseWrite() // close hijacked write connection + resp.Close() // close read connection + }() go func() { if !opts.Tty {