diff --git a/internal/ptree/ptree.go b/internal/ptree/ptree.go index 1f53a20..494a104 100644 --- a/internal/ptree/ptree.go +++ b/internal/ptree/ptree.go @@ -24,6 +24,10 @@ var ( func GetProcessRSSAnon(pid int) (uint64, error) { status := fmt.Sprintf("%d/status", pid) f, err := procfs.Open(status) + if os.IsNotExist(err) { + // process is already gone + return 0, nil + } if err != nil { return 0, err } diff --git a/pipe/memorylimit.go b/pipe/memorylimit.go index f21ee15..358a6de 100644 --- a/pipe/memorylimit.go +++ b/pipe/memorylimit.go @@ -58,7 +58,7 @@ func killAtLimit(byteLimit uint64, eventHandler func(e *Event)) memoryWatchFunc return case <-t.C: rss, err := stage.GetRSSAnon(ctx) - if err != nil { + if err != nil && !errors.Is(err, errProcessInfoMissing) { consecutiveErrors++ if consecutiveErrors >= 2 { eventHandler(&Event{