Many smbd forked processes are not resetting am_parent to NULL

Jeremy Allison jra at samba.org
Wed Apr 15 10:06:45 MDT 2015


On Wed, Apr 15, 2015 at 11:28:11AM +0200, Ralph Böhme wrote:
> Hi folks,
> 
> exit_server_common() checks the am_parent global and does a few things
> differently depending whether am_parent is NULL or not.
> 
> What are the supposed semantics? If I'm not mislead am_parent should
> be non NULL in the main smbd process and NULL in any forked child, be
> it a forked sesssion smbd process or some other forked subsystem.
> 
> The thing is, only smbd sessions childs reset am_parent to NULL as
> does the scavenger child, other subsystems like the printing subsystem
> seem to miss this step.
> 
> Shouldn't we basically set am_parent to NULL in anything that forks
> from the main smbd?

Yes.

> I'm currently looking at adding some cleanup code to
> exit_server_common() that is supposed to execute some code only in the
> am_parent != NULL case in the main smbd process. At the moment the
> code gets executed too from the printing subsystem. :)

That's a sad thing :-(.

> Happy to provide a patch that fixes this if I'm right about this.

Please do :-).


More information about the samba-technical mailing list