Compare commits

..

2 Commits

Author SHA1 Message Date
Thomas Hobson 81e315609d
Use `timeout` as fallback for killing process 2022-04-27 03:05:29 +12:00
Thomas Hobson 0ab66f4f5f
Cleanup all zombie processes
Prevents process table exhaustion
2022-04-27 02:51:10 +12:00
1 changed files with 15 additions and 4 deletions

View File

@ -120,13 +120,18 @@ class Job {
'--nofile=' + this.runtime.max_open_files,
'--fsize=' + this.runtime.max_file_size,
];
const timeout_call = [
'timeout', '-s', '9', Math.ceil(timeout / 1000),
];
if (memory_limit >= 0) {
prlimit.push('--as=' + memory_limit);
}
const proc_call = [
const proc_call = [
'nice',
...timeout_call,
...prlimit,
...nonetwork,
'bash',
@ -336,14 +341,20 @@ class Job {
const [_, ruid, euid, suid, fuid] = uid_line.split(/\s+/);
const [_1, state, user_friendly] = state_line.split(/\s+/);
const proc_id_int = parse_int(proc_id);
if (state == 'Z')
// Zombie process, just needs to be waited
if (state == 'Z'){
// Zombie process, just needs to be waited, regardless of the user id
if(!to_wait.includes(proc_id_int))
to_wait.push(proc_id_int);
return -1;
}
// We should kill in all other state (Sleep, Stopped & Running)
if (ruid == this.uid || euid == this.uid)
return parse_int(proc_id);
return proc_id_int;
} catch {
return -1;
}