[PATCH] ctdb-common: Set close-on-exec when creating PID file (bug 12898)

Volker Lendecke Volker.Lendecke at SerNet.DE
Thu Jul 27 13:13:45 UTC 2017

On Thu, Jul 13, 2017 at 08:37:57PM +1000, Martin Schwenke wrote:
> * API
>   We really just want a file pathname instead of directory and basename.
>   The main reason for this is that initscripts and systemd unit files
>   (and. consequently, ctdbd_wrapper) need to know the full pathname, so
>   it doesn't make sense to split it and re-join it.

Fine with that. All callers of lib/util/pidfile.c use
lp_pid_directory() or the source4 equivalent. That is easily

> * Coverity hit
>   lib/util/pidfile.c currently leaks the file descriptor and Coverity
>   notices.  Amitay's implementation stores it in a context.  When the
>   context is freed then the destructor does unlink/unlock/close.

To be honest, I see this as a cosmetic issue. The pidfile is kept open
by the parent process deliberately. It's a bit like the
autofree_context discussion: Depending on proper rundown by a talloc
destructor is important for more dynamic things. We should not depend
on this for main process exit. Other opinions? I'd call this a
"deliberate" in Coverity.

> * Fear  ;-)
>   lib/util/pidfile.c has this at the top:
>   /* this code is broken - there is a race condition with the unlink
>   (tridge) */

Not sure this still is true. If the ctdb version does this better, I'm
more than happy to port the fix.


SerNet GmbH, Bahnhofsallee 1b, 37081 Göttingen
phone: +49-551-370000-0, fax: +49-551-370000-9
AG Göttingen, HRB 2816, GF: Dr. Johannes Loxen
http://www.sernet.de, mailto:kontakt at sernet.de

More information about the samba-technical mailing list