From Bugzilla Helper:
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.5)
Gecko/20041111 Firefox/0.6.1 StumbleUpon/1.87
Description of problem:
running ifup multiple times without running ifdown on an interface
setup for dhcp leaves a bunch of dhclient daemons running that ifdown
does not kill. After a dozen or so of these dhclient daemons are
running, the interface becomes unstable, going down and requiring an
ifup <if>; ifdown <if> to fix it, presumably because of the competing
Version-Release number of selected component (if applicable):
Steps to Reproduce:
1. setup eth0 as a dhcp interface
2. ifup eth0
3. ifup eth0
4. ifup eth0
5. ifup eth0
6. ifdown eth0
7. ps aux | grep dhclient
8. notice the three orphaned dhclients
Actual Results: Three orphaned dhclient daemons are left running
Expected Results: Only one dhclient daemon should be running for a
given interface at a given time
changed summary to more accurately reflect severity of bug. This bug
will cause the networking on affected machines to become mysteriously
and worseningly unstable as the machine run.
Currently, dhclient does not write its pid file until after it gets
the lease; ergo, if ifup is invoked a second time while dhclient is
still negotiating/waiting, it's impossible to kill the other dhclients
without grovelling through /proc, which isn't really practical.
While it would be a change from upstream, does it make sense to have
dhclient record its pid file immediately?
I agree this is bad behavior on dhclient's part. The first thing it
should do is check for the existence of the pid file; if it exists,
it should then exit; the next thing it should then do is create the
pid file. I'll make changes accordingly for dhcp-3.0.1-40_FC3 /
OK, bounce back to initscripts when you're done.
This is now fixed, in dhcp-3.0.1-40_FC3, and dhcp-3.0.2-2 (FC4) .
This should be fixed with the current FC4 devel dhclient. A patch will be added
in initscripts-8.08-1 that will print a more legible error message in the case
where a client is already running rather than just 'failed'.
This was added to RHEL-3 and RHEL-4 because they both have this problem:
repeated ifup attempts cause dhclient to be run more than once for the
same interface, leading to orphaned dhclient processes and progressively
worse and unstable network performance.