Date: Sun, 10 Sep 2000 20:48:16 -0700 (PDT) From: John Baldwin <jhb@pike.osd.bsdi.com> To: Manfred Antar <null@pozo.com> Cc: current@FreeBSD.ORG Subject: Re: New Fatal trap in Current SMP (random.dev changes ??) Message-ID: <200009110348.UAA31972@pike.osd.bsdi.com> In-Reply-To: <4.3.2.7.2.20000910202520.00b17498@pozo.com> from Manfred Antar at "Sep 10, 2000 08:30:14 pm"
next in thread | previous in thread | raw e-mail | index | archive | help
Manfred Antar wrote: > At 08:16 PM 9/10/2000 -0700, John Baldwin wrote: > >Manfred Antar wrote: > >> >From a new kernel compiled from sources current 7:30 pm 9/10/00 pacific time > >> Although the first occurrence happened this morning after compiling a kernel > >> after the random dev changes. > >> The system boots and mounts disks. When it gets to this point: > >> Additional routing options: TCP extensions=NO TCP keepalive=YES. > >> routing daemons:. > >> I think the random dev kicks in at this point > >> > >> Fatal trap 12: page fault while in kernel mode > >> cpuid = 1; lapic.id = 0c000000 > >> fault virtual address = 0x2c > >> fault code = supervisor read, page not present > >> instruction pointer = 0x8:0xc014f280 > >> stack pointer = 0x10:0xc9a74f84 > >> frame pointer = 0x10:0xc9a74f9c > >> code segment = base 0x0, limit 0xfffff, type 0x1b > >> = DPL 0, pres 1,def 32 1,gran 1 > >> processor flags = interrupt enabled, resume, IOPL = 0 > >> current process = 2 (random) > >> trap number = 12 > >> panic: page fault > >> cpuid = 1; lapic.id = 0x000000 > >> boot() called on cpu#1 > >> > >> syncing disks....... > >> > >> The machine then is frozen and needs a reset to work again > >> the debugger is unavailable > I backed out to the old versions of the random dev files: > /sys/dev/randomdev: > harvest.c > randomdev.c > yarrow.c > yarrow.h > /sys/sys: > random.h > > And the panic goes away > Manfred I've got it fixed. The code is using TAILQ_REMOVE and TAILQ_FIRST to pull entries out of a tailq while it is walking it via TAILQ_FOREACH. Changing it to use a while(!TAILQ_EMPTY) instead of using TAILQ_FOREACH fixes it. I'll be committing the fix in just a sec.. -- John Baldwin <jhb@bsdi.com> -- http://www.FreeBSD.org/~jhb/ PGP Key: http://www.cslab.vt.edu/~jobaldwi/pgpkey.asc "Power Users Use the Power to Serve!" - http://www.FreeBSD.org/ To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200009110348.UAA31972>