]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
s4-smbd: Also restart prefork children lost to SIGKILL (-9)
authorAndrew Bartlett <abartlet@samba.org>
Wed, 18 Dec 2019 22:20:30 +0000 (11:20 +1300)
committerRalph Boehme <slow@samba.org>
Fri, 20 Dec 2019 10:09:34 +0000 (10:09 +0000)
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>
source4/smbd/process_prefork.c

index a7222079624a209a6bd8ce64f82cb2c260116c8c..5667fb5f1efc37d97c37d53ac0aacee57dad3aae 100644 (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",
                        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);
                }