From: Andrew Bartlett Date: Wed, 18 Dec 2019 22:20:30 +0000 (+1300) Subject: s4-smbd: Also restart prefork children lost to SIGKILL (-9) X-Git-Tag: ldb-2.1.0~191 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=30cbc5b90e4951a0ea924c204ff73e15c9750ace;p=thirdparty%2Fsamba.git 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 Reviewed-by: Ralph Boehme --- diff --git a/source4/smbd/process_prefork.c b/source4/smbd/process_prefork.c index a7222079624..5667fb5f1ef 100644 --- a/source4/smbd/process_prefork.c +++ b/source4/smbd/process_prefork.c @@ -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", getpid(), pid, status); 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); }