rootless: fix getCurrentOOMScoreAdj
`getCurrentOOMScoreAdj()` was broken because `strconv.Atoi()` was called
without trimming "\n".
Fix issue 40068: `rootless docker in kubernetes: "getting the final child's pid from
pipe caused \"EOF\": unknown"
@@ -3,8 +3,10 @@ package specconv // import "github.com/docker/docker/rootless/specconv"
import (
"io/ioutil"
"strconv"
+ "strings"
specs "github.com/opencontainers/runtime-spec/specs-go"
+ "github.com/sirupsen/logrus"
)
// ToRootless converts spec to be compatible with "rootless" runc.
@@ -19,10 +21,13 @@ func ToRootless(spec *specs.Spec, v2Controllers []string) error {
func getCurrentOOMScoreAdj() int {
b, err := ioutil.ReadFile("/proc/self/oom_score_adj")
if err != nil {
+ logrus.WithError(err).Warn("failed to read /proc/self/oom_score_adj")
return 0
}
- i, err := strconv.Atoi(string(b))
+ s := string(b)
+ i, err := strconv.Atoi(strings.TrimSpace(s))
if err != nil {
+ logrus.WithError(err).Warnf("failed to parse /proc/self/oom_score_adj (%q)", s)
return 0
}
return i
