diff options
author | OpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com> | 2019-07-19 00:05:48 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-07-19 00:05:48 +0200 |
commit | 565e858832952493e4752feb60ef65409085e836 (patch) | |
tree | c3ac8779ce19e709da8b6c44f05d7c774ef62917 /libpod | |
parent | cc880776c61baa4273ee67f02a5ee92f1c0ebc12 (diff) | |
parent | 57869f377bb2da6a211c5baf22daa0de8dcf825e (diff) | |
download | podman-565e858832952493e4752feb60ef65409085e836.tar.gz podman-565e858832952493e4752feb60ef65409085e836.tar.bz2 podman-565e858832952493e4752feb60ef65409085e836.zip |
Merge pull request #3600 from mheon/backports
Backport Exec memory leak fix
Diffstat (limited to 'libpod')
-rw-r--r-- | libpod/container_api.go | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/libpod/container_api.go b/libpod/container_api.go index 832801aeb..fe66abf7a 100644 --- a/libpod/container_api.go +++ b/libpod/container_api.go @@ -345,6 +345,11 @@ func (c *Container) Exec(tty, privileged bool, env, cmd []string, user, workDir if err != nil { if exited { // If the runtime exited, propagate the error we got from the process. + // We need to remove PID files to ensure no memory leaks + if err2 := os.Remove(pidFile); err2 != nil { + logrus.Errorf("Error removing exit file for container %s exec session %s: %v", c.ID(), sessionID, err2) + } + return err } return errors.Wrapf(err, "timed out waiting for runtime to create pidfile for exec session in container %s", c.ID()) @@ -352,6 +357,10 @@ func (c *Container) Exec(tty, privileged bool, env, cmd []string, user, workDir // Pidfile exists, read it contents, err := ioutil.ReadFile(pidFile) + // We need to remove PID files to ensure no memory leaks + if err2 := os.Remove(pidFile); err2 != nil { + logrus.Errorf("Error removing exit file for container %s exec session %s: %v", c.ID(), sessionID, err2) + } if err != nil { // We don't know the PID of the exec session // However, it may still be alive |