mirror of
https://github.com/systemd/systemd.git
synced 2025-03-25 18:50:18 +03:00
core: do an extra check if oom was triggered when handling sigchild
Should fix #12425.
This commit is contained in:
parent
569554d9e5
commit
2ba6ae6b2b
@ -2607,7 +2607,7 @@ void unit_add_to_cgroup_empty_queue(Unit *u) {
|
||||
log_debug_errno(r, "Failed to enable cgroup empty event source: %m");
|
||||
}
|
||||
|
||||
static int unit_check_oom(Unit *u) {
|
||||
int unit_check_oom(Unit *u) {
|
||||
_cleanup_free_ char *oom_kill = NULL;
|
||||
bool increased;
|
||||
uint64_t c;
|
||||
|
@ -197,6 +197,7 @@ int unit_watch_cgroup(Unit *u);
|
||||
int unit_watch_cgroup_memory(Unit *u);
|
||||
|
||||
void unit_add_to_cgroup_empty_queue(Unit *u);
|
||||
int unit_check_oom(Unit *u);
|
||||
|
||||
int unit_attach_pids_to_cgroup(Unit *u, Set *pids, const char *suffix_path);
|
||||
|
||||
|
@ -2524,8 +2524,13 @@ static int manager_dispatch_sigchld(sd_event_source *source, void *userdata) {
|
||||
/* Finally, execute them all. Note that u1, u2 and the array might contain duplicates, but
|
||||
* that's fine, manager_invoke_sigchld_event() will ensure we only invoke the handlers once for
|
||||
* each iteration. */
|
||||
if (u1)
|
||||
if (u1) {
|
||||
/* We check for oom condition, in case we got SIGCHLD before the oom notification.
|
||||
* We only do this for the cgroup the PID belonged to. */
|
||||
(void) unit_check_oom(u1);
|
||||
|
||||
manager_invoke_sigchld_event(m, u1, &si);
|
||||
}
|
||||
if (u2)
|
||||
manager_invoke_sigchld_event(m, u2, &si);
|
||||
if (array_copy)
|
||||
|
Loading…
x
Reference in New Issue
Block a user