Date: Fri, 5 Nov 1999 22:59:16 +0100 From: Ollivier Robert <roberto@keltia.freenix.fr> To: "FreeBSD Current Users' list" <freebsd-current@FreeBSD.ORG> Subject: Serious locking problem in CURRENT Message-ID: <19991105225916.A14961@keltia.freenix.fr>
next in thread | raw e-mail | index | archive | help
While changing my Postfix configuration, I stumbled on something weird.
One of Postfix's processes (master) runs all the time and keep a exclusive
write lock on $spool/pid/master.pid. When one does a reload, postfix-script
runs master with the ``-t'' argument which makes master try to get a lock on
the pid file.
Under 3.3-RELEASE, everything is fine, the lock can't be obtained and Postfix
knows it is already running.
Under -CURRENT (two days old), the lock IS OBTAINED, meaning Postfix thinks it 
is not running.
3.3-RELEASE: OK
-=-=-=-
402 [22:56] root@sidhe:/etc/postfix# make
postfix reload
postfix-script: refreshing the Postfix mail system
404 [22:56] root@sidhe:spool/postfix# kdump|tail -20
  8359 master   RET   getrlimit 0
  8359 master   CALL  chdir(0x8057b28)
  8359 master   NAMI  "/var/spool/postfix"
  8359 master   RET   chdir 0
  8359 master   CALL  access(0x805c3e8,0)
  8359 master   NAMI  "pid/master.pid"
  8359 master   RET   access 0
  8359 master   CALL  open(0x805c3e8,0x2,0)
  8359 master   NAMI  "pid/master.pid"
  8359 master   RET   open 7
  8359 master   CALL  fstat(0x7,0xbfbfd300)
  8359 master   RET   fstat 0
  8359 master   CALL  lstat(0x805c3e8,0xbfbfd2a0)
  8359 master   NAMI  "pid/master.pid"
  8359 master   RET   lstat 0
  8359 master   CALL  flock(0x7,0x6)
  8359 master   RET   flock -1 errno 35 Resource temporarily unavailable
  8359 master   CALL  close(0x7)
  8359 master   RET   close 0
  8359 master   CALL  exit(0x1)
-=-=-=-
4.0-CURRENT: NOT OK
-=-=-=-
331 [22:55] root@keltia:spool/postfix# postfix reload
postfix-script: fatal: the Postfix mail system is not running
332 [22:56] root@keltia:spool/postfix# kdump|tail -20
 14942 master   RET   gettimeofday 0
 14942 master   CALL  getrlimit(0x1,0xbfbfd3d0)
 14942 master   RET   getrlimit 0
 14942 master   CALL  chdir(0x80589e8)
 14942 master   NAMI  "/var/spool/postfix"
 14942 master   RET   chdir 0
 14942 master   CALL  access(0x805e248,0)
 14942 master   NAMI  "pid/master.pid"
 14942 master   RET   access 0
 14942 master   CALL  open(0x805e248,0x2,0)
 14942 master   NAMI  "pid/master.pid"
 14942 master   RET   open 7
 14942 master   CALL  fstat(0x7,0xbfbfd324)
 14942 master   RET   fstat 0
 14942 master   CALL  lstat(0x805e248,0xbfbfd2c4)
 14942 master   NAMI  "pid/master.pid"
 14942 master   RET   lstat 0
 14942 master   CALL  flock(0x7,0x6)                    <<<<<<<< ?????
 14942 master   RET   flock 0                           <<<<<<<< ?????
 14942 master   CALL  exit(0)
-=-=-=-
I've verified that it has a lock on 3.3-RELEASE but can't on CURRENT since
lsof is broken (sigh).
3.3-RELEASE:
405 [22:56] root@sidhe:spool/postfix# lsof pid/master.pid 
COMMAND  PID USER   FD   TYPE   DEVICE SIZE/OFF  NODE NAME
master  7155 root    7uW VREG 0,131079       17 18615 pid/master.pid
                     ^^^
Same Postfix versions on both. I even recompiled it on CURRENT.
406 [22:58] root@sidhe:spool/postfix# postconf mail_version
mail_version = Snapshot-19990912
333 [22:56] root@keltia:spool/postfix# postconf mail_version
mail_version = Snapshot-19990912
-- 
Ollivier ROBERT -=- FreeBSD: The Power to Serve! -=- roberto@keltia.freenix.fr
FreeBSD keltia.freenix.fr 4.0-CURRENT #75: Tue Nov  2 21:03:12 CET 1999
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?19991105225916.A14961>
