pidfile

Vernon Schryver vjs@calcite.rhyolite.com
Mon Oct 10 22:12:34 UTC 2005


> From: Pavel Urban <pavel.urban@ct.cz>

> is it intentional or broken?
>
> [root@antivir1 root]# cat /var/run/dcc/dccifd.pid
> -7149

It is an intentional change to fix an old, unreported bug in stopping
dccifd.  Before only the dccm PID file contained the process group ID.


The bug is related to these comments in rcDCC

	# stop dccm and dccifd
	for PID in `cat $DCC_RUNDIR/dcc*.pid $DCC_HOMEDIR/dcc*.pid \
		    2>/dev/null`; do
#	    signal the process group because on Linux systems it does not work
#	    to signal the main process.  See `man sigwait` on a Linux system.
	    /bin/kill -15 $PID

and dcclib/restart.c:

#ifdef linux
		/* Linux threads are broken.  Signals given the
		 * original process are delivered to only the
		 * thread that happens to have that PID.  The
		 * sendmail libmilter thread that needs to hear
		 * SIGINT and other signals does not, and that breaks
		 * scripts that need to stop dccm.
		 * However, signaling the process group works. */
		fprintf(f, "-%d\n", (u_int)getpgrp());
#else
		fprintf(f, "%d\n", (u_int)getpid());
#endif


Vernon Schryver    vjs@rhyolite.com



More information about the DCC mailing list

Contact vjs@rhyolite.com by mail or use the form.