sys_fork() / sys_getpid()
simo
idra at samba.org
Sat Mar 24 17:55:25 MDT 2012
On Sat, 2012-03-24 at 07:11 -0700, Jeremy Allison wrote:
> On Sat, Mar 24, 2012 at 02:58:19PM +0100, Volker Lendecke wrote:
> > On Sat, Mar 24, 2012 at 02:43:15PM +0100, Jelmer Vernooij wrote:
> > > At the moment we have two trivial wrappers for fork() and getpid() in
> > > lib/util/system.c. These wrappers exist so that we can cache the PID and
> > > avoid a system call when getpid() is called.
> > >
> > > Is this optimization actually still worth the trouble these days? We
> > > don't seem to have any regularly called code paths that need it. The
> > > printing code seems to use it as a simple way of identifying a single
> > > server in the database, but that can be worked around by just using a
> > > single variable there.
> > >
> > > Furthermore, there is the risk that we end up not updating the pid after
> > > a fork() - thus ending up with sys_getpid() returning the wrong pid. For
> > > example, our libraries are used in various applications, either directly
> > > or as part of e.g. openchange, which don't use sys_fork() but plain fork.
> > >
> > > Thoughts?
I suffered this problem while I was working on the prefork code for
spoolssd and lsasd, I couldn't understand why some code was buggy, until
I found out it was using sys_getpid() and I was not using sys_fork().
> > I think that can go. I think at least glibc caches that
> > anyway, and we try to move away from getpid to
> > messaging_server_id() and friends.
>
> +1 from me also (and I added them originally :-).
>
> No longer needed - thanks !
Yeah the less "special calls" we have the better, they generally only
get in the way because of this kind of unexpected side effects, when
mixing code.
Simo.
--
Simo Sorce
Samba Team GPL Compliance Officer <simo at samba.org>
Principal Software Engineer at Red Hat, Inc. <simo at redhat.com>
More information about the samba-technical
mailing list