NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

bin/39292: dhclient running amok, sending hundreds of requests per second



>Number:         39292
>Category:       bin
>Synopsis:       dhclient running amok, sending hundreds of requests per second
>Confidential:   no
>Severity:       critical
>Priority:       high
>Responsible:    bin-bug-people
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Tue Aug 05 12:20:00 +0000 2008
>Originator:     Hans Rosenfeld
>Release:        NetBSD 4.0_STABLE
>Organization:
>Environment:
System: NetBSD escobedo 4.0_STABLE NetBSD 4.0_STABLE (ESCOBEDO) #5: Mon Feb 11 
21:13:51 CET 2008 hrosenfe@escobedo:/usr/src/sys/arch/amd64/compile/ESCOBEDO 
amd64
Architecture: x86_64
Machine: amd64
>Description:
dhclient suddenly started looping, sending out requests as fast as it
could. It logged thousands of messages just like these:

Aug  3 19:31:25 escobedo dhclient: DHCPDISCOVER on ex0 to 255.255.255.255 port 
67 interval 4
Aug  3 19:31:25 escobedo dhclient: DHCPOFFER from xx.xx.xx.xx
Aug  3 19:31:25 escobedo dhclient: DHCPREQUEST on ex0 to 255.255.255.255 port 67
Aug  3 19:31:25 escobedo dhclient: DHCPACK from xx.xx.xx.xx
Aug  3 19:31:25 escobedo dhclient: 
/home/builds/ab/netbsd-4-0-RELEASE/src/dist/dhcp/client/dhclient.c(2072): null 
pointer
Aug  3 19:31:25 escobedo dhclient: DHCPDECLINE on ex0 to 255.255.255.255 port 67
Aug  3 19:31:25 escobedo dhclient: DHCPDISCOVER on ex0 to 255.255.255.255 port 
67 interval 7
Aug  3 19:31:25 escobedo dhclient: DHCPOFFER from xx.xx.xx.xx
Aug  3 19:31:25 escobedo dhclient: DHCPREQUEST on ex0 to 255.255.255.255 port 67
Aug  3 19:31:25 escobedo dhclient: DHCPACK from xx.xx.xx.xx
Aug  3 19:31:25 escobedo dhclient: 
/home/builds/ab/netbsd-4-0-RELEASE/src/dist/dhcp/client/dhclient.c(2072): null 
pointer
Aug  3 19:31:25 escobedo dhclient: DHCPDECLINE on ex0 to 255.255.255.255 port 67

>How-To-Repeat:
Before dhclient began acting strange, amd(8) segfaulted and filled /
with a coredump. After a while there were enough processes hanging in
NFS accesses that no more forking was possible. The dhclient loop then
caused /var to fill up too, not only on this machine but also on the
dhcp server.

I don't know exactly what caused this behaviour, but I think it is
related to the execution of a script failing in bind_lease. The error
occured in make_decline, which is only called from bind_lease and only
if the script execution fails.

>Fix:
I looked at the dhclient code, but I have no idea where to fix it. The
error is logged in option_state_dereference (dist/dhcp/common/alloc.c:926), 
but it is subsequently ignored, so dhclient just tries again.




Home | Main Index | Thread Index | Old Index