From a52cc643cfe6733465cfc9ccb3d21cbdc4fd7506 Mon Sep 17 00:00:00 2001 From: Petri Latvala Date: Thu, 11 Apr 2019 12:40:12 +0300 Subject: runner: Make sure oom-killer doesn't kill the runner Tests that eat all of the RAM and then some to invoke the oom-killer deliberately sometimes cause extra casualties. Make sure the runner stays alive. Signed-off-by: Petri Latvala Reviewed-by: Chris Wilson --- runner/executor.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'runner') diff --git a/runner/executor.c b/runner/executor.c index 0e91b7ab..7e5fbe8f 100644 --- a/runner/executor.c +++ b/runner/executor.c @@ -1221,6 +1221,22 @@ static void write_abort_file(int resdirfd, } } +static void oom_immortal(void) +{ + int fd; + const char never_kill[] = "-1000"; + + fd = open("/proc/self/oom_score_adj", O_WRONLY); + if (fd < 0) { + fprintf(stderr, "Warning: Cannot adjust oom score.\n"); + return; + } + if (write(fd, never_kill, sizeof(never_kill)) != sizeof(never_kill)) + fprintf(stderr, "Warning: Adjusting oom score failed.\n"); + + close(fd); +} + bool execute(struct execute_state *state, struct settings *settings, struct job_list *job_list) @@ -1268,6 +1284,8 @@ bool execute(struct execute_state *state, close(timefd); } + oom_immortal(); + init_watchdogs(settings); if (!uname(&unamebuf)) { -- cgit v1.2.3