From b814de305445f59baa289ab926cbe6ca05ac26a4 Mon Sep 17 00:00:00 2001 From: Nick Rosbrook Date: Wed, 20 Jul 2022 11:16:37 -0400 Subject: [PATCH] oomd: fix off-by-one when dumping kill candidates When we kill a cgroup that is towards the end of the sorted candidate list (i.e. when we have to resort to killing a candidate with ManagedOOMPreference=avoid), this cgroup is not logged in the candidate list. This is due to an off-by-one error when assigning dump_until. --- src/oom/oomd-util.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/oom/oomd-util.c b/src/oom/oomd-util.c index 8a3fb09e37e..d31d5ca6235 100644 --- a/src/oom/oomd-util.c +++ b/src/oom/oomd-util.c @@ -323,7 +323,7 @@ int oomd_kill_by_pgscan_rate(Hashmap *h, const char *prefix, bool dry_run, char continue; /* Try to find something else to kill */ } - dump_until = MAX(dump_until, i); + dump_until = MAX(dump_until, i + 1); char *selected = strdup(sorted[i]->path); if (!selected) return -ENOMEM; @@ -367,7 +367,7 @@ int oomd_kill_by_swap_usage(Hashmap *h, uint64_t threshold_usage, bool dry_run, continue; /* Try to find something else to kill */ } - dump_until = MAX(dump_until, i); + dump_until = MAX(dump_until, i + 1); char *selected = strdup(sorted[i]->path); if (!selected) return -ENOMEM; -- 2.47.3