How Somebody Helped Kill dhcpd on Our Network

David W. Hankins David_Hankins at isc.org
Mon Jul 31 16:12:12 UTC 2006


On Mon, Jul 31, 2006 at 08:03:20AM -0500, Martin McCormick wrote:
> about 2,500 "out of memory" messages and then dhcpd finally
> exited with a 11) SIGSEG and a core dump.  Good old FreeBSD unix

Can you give me a 'where' on 'gdb /path/to/dhcpd /path/to/dhcpd.core'?


My guess on why dhcpd used more memory is you have ping-check
enabled, and for every client being sent back to it on a DISCOVER,
it had to enter into the scheduler another delayed ACK.

I think we could (should) put a limit on how many ping-checks are
outstanding.

Anyway, to verify that, what you want to do is again on your
gdb prompt have a look at the scheduler's task list:

	print *timeouts

I'd expect to see the 'func' struct member be 'lease_ping_timeout'
more often than not.  To get a feel for how many are queued, try
looking at ->next pointers:

	print *timeouts->next

	print *timeouts->next->next

	print *timeouts->next->next->next

If they're (generally) all lease_ping_timeout, then I think
that's the most likely culprit.

-- 
David W. Hankins	"If you don't do it right the first time,
Software Engineer		you'll just have to do it again."
Internet Systems Consortium, Inc.	-- Jack T. Hankins


More information about the dhcp-users mailing list