Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 6 May 2006 14:55:30 -0400
From:      =?ISO-8859-1?Q?Lodewijk_V=F6ge?= <lvoege@gmail.com>
To:        freebsd-stable@freebsd.org
Subject:   dhclient taking up all CPU
Message-ID:  <82912730-AD0E-4AE0-AA7C-FDD321F00B57@gmail.com>

next in thread | raw e-mail | index | archive | help
hello,

a while ago someone reported the same problem I had been seeing, that =20=

dhclient starts taking up 100% CPU. it's probably something comcast =20
is doing.

I couldn't get the requested coredump then, if I set kern.corefile =20
to /tmp/%N.core and kill -QUIT it, it doesn't seem to produce a =20
coredump. but it happened again just now, and I was able to attach =20
gdb. this is where it's spinning, in receive_packet() in bpf.c:

(gdb)
285                     if (interface->rbuf_offset =3D=3D interface-=20
 >rbuf_len) {
(gdb)
299                     if (interface->rbuf_len - interface-=20
 >rbuf_offset <
(gdb)
306                     memcpy(&hdr, &interface->rbuf[interface-=20
 >rbuf_offset],
(gdb)
313                     if (interface->rbuf_offset + hdr.bh_hdrlen + =20
hdr.bh_caplen >
(gdb)
320                     interface->rbuf_offset +=3D hdr.bh_hdrlen;
(gdb)
327                     if (hdr.bh_caplen !=3D hdr.bh_datalen) {
(gdb)
328                             interface->rbuf_offset =3D
(gdb)
331                             continue;
(gdb)
385             } while (!length);

and then it goes back to line 285. interesting variables are:

(gdb) p *interface
$1 =3D {next =3D 0x0, hw_address =3D {htype =3D 1 '\001', hlen =3D 6 =
'\006',
     haddr =3D "\000\021=D8=A0\223?\000\000\000\000\000\000\000\000\000"},=
 =20
primary_address =3D {s_addr =3D 0},
   name =3D "vr0", '\0' <repeats 12 times>, rfdesc =3D 7, wfdesc =3D 7, =20=

rbuf =3D 0x807d000 "\022?\\Dk\214", rbuf_max =3D 4096,
   rbuf_offset =3D 416, rbuf_len =3D 415, ifp =3D 0x806f160, client =3D =20=

0x8075000, noifmedia =3D 0, errors =3D 0, dead =3D 0, index =3D 2}
(gdb) p length
$2 =3D 0
(gdb) p hdr
$3 =3D {bh_tstamp =3D {tv_sec =3D 0, tv_usec =3D 0}, bh_caplen =3D =
4294901760, =20
bh_datalen =3D 4294901778, bh_hdrlen =3D 65535}

this is FreeBSD/i386 6.1-RC as of about two weeks ago.

Lodewijk




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?82912730-AD0E-4AE0-AA7C-FDD321F00B57>