/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