[PATCH] s3: increase the log level for missing PIDs on SIGCHLD

David Disseldorp ddiss at suse.de
Wed Feb 16 09:23:25 MST 2011

Since the fix for bso#7836, the parent smbd is responsible for
maintaining an up-to-date printcap cache. It does this by forking a
child process to asynchronously fetch printcap data from CUPS.

When the child process exits after fetching all printcap data, the
parent smbd is sent SIGCHLD. This triggers smbd_sig_chld_handler() which
looks for the exited process PID on a "children" list.
Child smbd process PIDs are added to the "children" list to ensure
cleanup on unclean shutdown and log level change notification messages.

Printcap update process PIDs are not added to the list as they do not
maintain any state that requires cleanup, nor do they wait on tevent for
 source3/smbd/server.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/source3/smbd/server.c b/source3/smbd/server.c
index 10e8b62..f4436bf 100644
--- a/source3/smbd/server.c
+++ b/source3/smbd/server.c
@@ -294,7 +294,8 @@ static void remove_child_pid(pid_t pid, bool unclean_shutdown)
-	DEBUG(0, ("Could not find child %d -- ignoring\n", (int)pid));
+	/* not all forked child processes are added to the children list */
+	DEBUG(1, ("Could not find child %d -- ignoring\n", (int)pid));

More information about the samba-technical mailing list