Skip to content

Commit

Permalink
Fix process handle leak when launching a job container
Browse files Browse the repository at this point in the history
CreateProcess gives us back a handle to the newly created process.
Previously, we ignored this handle, which meant it was leaking every
time we created a new job container (or anything else that uses
internal/exec in the future).

Process handle leaks can be bad as an exited process is left as a
"zombie" until all handles to it have closed, continuing to use memory.

Fix this by closing the handle from CreateProcess.

Signed-off-by: Kevin Parsons <[email protected]>
  • Loading branch information
kevpar committed Feb 7, 2024
1 parent b0d91fb commit 01b53e3
Showing 1 changed file with 2 additions and 1 deletion.
3 changes: 2 additions & 1 deletion internal/exec/exec.go
Original file line number Diff line number Diff line change
Expand Up @@ -209,8 +209,9 @@ func (e *Exec) Start() error {
if err != nil {
return fmt.Errorf("failed to create process: %w", err)
}
// Don't need the thread handle for anything.
// Don't need the process/thread handles for anything.
defer func() {
_ = windows.CloseHandle(windows.Handle(pi.Process))
_ = windows.CloseHandle(windows.Handle(pi.Thread))
}()

Expand Down

0 comments on commit 01b53e3

Please sign in to comment.