Skip site navigation (1)Skip section navigation (2)
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>