Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 02 Jun 1997 22:56:04 -0700 (PDT)
From:      "Duane H. Hesser" <alex@androcles.com>
To:        Julian Elischer <julian@whistle.com>
Cc:        cvs-etc@FreeBSD.ORG, cvs-all@FreeBSD.ORG, cvs-committers@FreeBSD.ORG, Adam David <adam@veda.is>, =?KOI8-R?B?4c7E0sXKIP7F0s7P1w==?= <ache@nagual.pp.ru>, Peter Wemm <peter@spinner.dialix.com.au>
Subject:   Re: cvs commit: src/etc rc
Message-ID:  <XFMail.970602233020.alex@androcles.com>
In-Reply-To: <33930CFD.794BDF32@whistle.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Umm...sorry to intrude on your thread, guys (throw me out if you
like), but I think I'm a little confused about WHICH problem you're
talking about (maybe I missed something?).

There are two possible problems with lock files that I know about.
One is easy, the other a little harder, and at least the easy one
can be handled pretty handily from shell scripts (as well as C).

1) dead or 'stale' locks:
        if test kill -0 `cat PIDFILE`
        then
                do what you do if the process LIVES
        else
                RIP
        fi

        ...or the C equivalent.
        This supposes that the pid file contains the PID and only
        the pid

2) wraparound--the demon dies and sometime later another process
   re-uses the pid.  Problem (1) is actually fairly frequent...some
   dummy (not me, no NEVER me...) does a 'kill -9', or the SIGSEGV
   demon randomly kills a perfectly good program...

   (2) is less likely.  In 18 years of watching closely I've never
   seen one demon assume another's process identity.  It COULD
   happen, and it could HAVE happened, but I'd like to think I
   would've noticed.  No matter, it could happen.  Still, 'ps -c'
   (if I remember) prints from p_comm, rather than the arg string,
   and I don't think a process is able to mangle that easily, is
   it? I suppose that you could say that if it does, it deserves
   it's fate.  Forgive me, that is unkind...

So what IS the problem?  What am I missing? I agree that taking an
flock on a pid file is a nice idea, so long as you can afford an
open fd, but it doesn't seem to me that revising code (except maybe
some shell scripts) is necessary to check for dead locks.  I (for
one) would be willing to take my chances on the wraparound problem.

But please, NO MORE symbolic lunks! Please?  I don't think I could
STAND another symbolic lunk.   

Duane H. Hesser
dhh@androcles.com



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?XFMail.970602233020.alex>