/etc/rc.d locking devd.pid (was Re: Restarting devd)

Warren Block wblock at wonkity.com
Wed Nov 11 23:54:42 UTC 2009


On Sun, 18 Oct 2009, Warren Block wrote:

> On Mon, 19 Oct 2009, Kostik Belousov wrote:
>>> 
>>> ...and this is due to dhclient, run from /etc/rc.d at startup, locking
>>> /var/run/devd.pid:
>>> 
>>> lightning% lsof /var/run/devd.pid
>>> COMMAND   PID  USER   FD   TYPE DEVICE SIZE/OFF  NODE NAME
>>> devd      400  root    6w  VREG  0,101        3 47124 /var/run/devd.pid
>>> dhclient  865  root    6w  VREG  0,101        3 47124 /var/run/devd.pid
>>> dhclient 1024 _dhcp    6w  VREG  0,101        3 47124 /var/run/devd.pid
>>> 
>>> This is a regression from 7-STABLE, where devd.pid is only locked by
>>> devd after startup.
>> 
>> Devd forks to spawn dhclient, it seems, and opened file descriptor for
>> the lock file is leaking to the child. Since pidfile(3) uses flock(2),
>> the lock survives devd death.
>> 
>> I think that this is a generic issue with pidfile/fork interaction.
>> It is not obvious whether setting FD_CLOEXEC flag is right thing to
>> do there.

(And that didn't fix it, but information included for completeness.)

I've entered PR bin/140462 for this.

-Warren Block * Rapid City, South Dakota USA


More information about the freebsd-current mailing list