summaryrefslogtreecommitdiff
path: root/runner/executor.c
diff options
context:
space:
mode:
Diffstat (limited to 'runner/executor.c')
-rw-r--r--runner/executor.c18
1 files changed, 18 insertions, 0 deletions
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)) {