1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-23 17:34:34 +03:00

s4-smbd: Also restart prefork children lost to SIGKILL (-9)

Samba 4.10 and later versions have a process restart capability to greatly
reduce the impact of crashes due to a NULL pointer de-reference or abort().

However SIGKILL was deliberatly omitted.

Sadly this is the most likely case, due to the OOM killer, as raised here:

https://lists.samba.org/archive/samba-technical/2019-November/134529.html

Subsequent discussion (offline) has been to agree that we should restart in
this case.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=14221

Signed-off-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>
This commit is contained in:
Andrew Bartlett 2019-12-19 11:20:30 +13:00 committed by Ralph Boehme
parent b28d1dca86
commit 30cbc5b90e

View File

@ -518,7 +518,8 @@ static void prefork_child_pipe_handler(struct tevent_context *ev,
DBG_ERR("Parent %d, Child %d terminated with signal %d\n", DBG_ERR("Parent %d, Child %d terminated with signal %d\n",
getpid(), pid, status); getpid(), pid, status);
if (status == SIGABRT || status == SIGBUS || status == SIGFPE || if (status == SIGABRT || status == SIGBUS || status == SIGFPE ||
status == SIGILL || status == SIGSYS || status == SIGSEGV) { status == SIGILL || status == SIGSYS || status == SIGSEGV ||
status == SIGKILL) {
prefork_restart(ev, rc); prefork_restart(ev, rc);
} }