smbd: call exit_server_cleanly() to avoid panicking
authorRalph Boehme <slow@samba.org>
Wed, 5 Jul 2023 09:33:58 +0000 (11:33 +0200)
committerJule Anger <janger@samba.org>
Thu, 6 Jul 2023 11:56:19 +0000 (11:56 +0000)
commit36bb9480604b17d23da34f05c3a0a64a85701431
treec5986283a546ca310a1b820e2e44cea0a9884424
parentf2c18045a57e95597b4841e704e67b5811454979
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

(cherry picked from commit 083fe1c28c6ec69cbd15d8cc2f7f06b1b630f2bc)
source3/smbd/scavenger.c