smbd: call exit_server_cleanly() to avoid panicking
commit083fe1c28c6ec69cbd15d8cc2f7f06b1b630f2bc
authorRalph Boehme <slow@samba.org>
Wed, 5 Jul 2023 09:33:58 +0000 (5 11:33 +0200)
committerStefan Metzmacher <metze@samba.org>
Wed, 5 Jul 2023 13:14:08 +0000 (5 13:14 +0000)
tree14813959aebe1434fbcc4065f22f0e078c057f1f
parent50e771c12f84f9268c2e9ddeef0965f79f85de3d
smbd: call exit_server_cleanly() to avoid panicking

The parent smdb forwards SIGTERM to its process group in order to kill all
children like the scavenger. This happens from a function registered via
atexit() which means the signal forwarding is happening very briefly before the
main smbd process exits. When exiting the pipe between smbd and scavenger is
closed which triggers a file event in the scavenger.

However, due to kernel sheduling it is possible that the file descriptor event
is received before the signal, where we call exit_server() which call
smb_panic() at the end.

Change the exit to exit_server_cleanly() and just log this event at level 2
which we already do.

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

Signed-off-by: Ralph Boehme <slow@samba.org>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
Autobuild-User(master): Stefan Metzmacher <metze@samba.org>
Autobuild-Date(master): Wed Jul  5 13:14:08 UTC 2023 on atb-devel-224
source3/smbd/scavenger.c