Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 6 Aug 2003 18:12:29 -0400 (EDT)
From:      Andrew Gallatin <gallatin@cs.duke.edu>
To:        "Alan L. Cox" <alc@imimic.com>
Cc:        cvs-all@FreeBSD.org
Subject:   Re: cvs commit: src/sys/i386/i386 pmap.c
Message-ID:  <16177.32077.922446.986623@grasshopper.cs.duke.edu>
In-Reply-To: <3F3164D8.17704FF1@imimic.com>
References:  <200308061846.h76IkmYp068237@repoman.freebsd.org> <20030806162243.A91712@grasshopper.cs.duke.edu> <3F3164D8.17704FF1@imimic.com>

next in thread | previous in thread | raw e-mail | index | archive | help

Alan L. Cox writes:
 > Andrew Gallatin wrote:
 > > 
 > > Alan Cox [alc@FreeBSD.org] wrote:
 > > > alc         2003/08/06 11:46:48 PDT
 > > >
 > > >   FreeBSD src repository
 > > >
 > > >   Modified files:
 > > >     sys/i386/i386        pmap.c
 > > >   Log:
 > > >   Acquire the page queues lock in pmap_insert_entry().  (I used to believe
 > > >   that the page's busy flag could be relied upon to synchronize access to the
 > > >   pv list.  I don't any longer.  See, for example, the call to
 > > >   pmap_insert_entry() from pmap_copy().)
 > > 
 > > Any chance this is what's causing the pmap corruption on alpha and ia64?
 > > We're also doing those same 3 lines there:
 > > 
 > >       TAILQ_INSERT_TAIL(&pmap->pm_pvlist, pv, pv_plist);
 > >       TAILQ_INSERT_TAIL(&m->md.pv_list, pv, pv_list);
 > >       m->md.pv_list_count++;
 > > 
 > 
 > Yup.  Give it a try.
 > 
 > > FWIW,  I've managed to get a j16 buildworld to complete on a July 4
 > > kernel, and fail with a fault-on-nofault-entry panic with a July 10
 > > kernel.
 > > 
 > 
 > Prior to the "no fault", I would expect that a zero-filled page got
 > instantiated to satisfy the fault.
 > 
 > Alan

With the patch, the early "no fault" panic goes away, and seems to be
replace by memory corruption later in the build:

building static c library
ranlib libc_pic.a
ranlib libc.a
ranlib libc_p.a
sh /usr/src/tools/install.sh -C -o root -g wheel -m 444   libc.a /usr/obj/usr/src/alpha/usr/lib
sh /usr/src/tools/install.sh -C -o root -g wheel -m 444   libc_p.a /usr/obj/usr/src/alpha/usr/lib
sh /usr/src/tools/install.sh -s -o root -g wheel -m 444     libc.so.5 /usr/obj/usr/src/alpha/usr/lib
ln -fs libc.so.5 /usr/obj/usr/src/alpha/usr/lib/libc.so
sh /usr/src/tools/install.sh -o root -g wheel -m 444   libc_pic.a /usr/obj/usr/src/alpha/usr/lib
5 errors
*** Error code 2
1 error
*** Error code 2
1 error
*** Error code 2
1 error


This is after the build is 1/2 done (judging by the size of the
logfile).

I'm going to try again to ensure that I don't get the panic..

Drew



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?16177.32077.922446.986623>