Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 27 Nov 2012 17:51:32 +0200
From:      Konstantin Belousov <kostikbel@gmail.com>
To:        Andre Oppermann <andre@freebsd.org>
Cc:        alc@freebsd.org, freebsd-current@freebsd.org
Subject:   Re: panic: vm_object_madvise: page 0xfffffe0413c58630 is fictitious
Message-ID:  <20121127155132.GM3013@kib.kiev.ua>
In-Reply-To: <50B4DE64.5090809@freebsd.org>
References:  <50B4A374.5040705@freebsd.org> <20121127150625.GJ3013@kib.kiev.ua> <50B4DE64.5090809@freebsd.org>

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

--TN8pJM9vJMHHFgJc
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Tue, Nov 27, 2012 at 04:38:12PM +0100, Andre Oppermann wrote:
> On 27.11.2012 16:06, Konstantin Belousov wrote:
> > On Tue, Nov 27, 2012 at 12:26:44PM +0100, Andre Oppermann wrote:
> >> FreeBSD bbb.ccc 10.0-CURRENT FreeBSD 10.0-CURRENT #0:
> >> Fri Nov 23 17:00:40 CET 2012
> >> aaa@bbb.ccc:/usr/obj/usr/src/head/sys/GENERIC  amd64
> >>
> >> #0  doadump (textdump=3D-2014022336) at pcpu.h:229
> >> #1  0xffffffff8033e2d2 in db_fncall (dummy1=3D<value optimized out>,
> >> dummy2=3D<value optimized out>,
> >>       dummy3=3D<value optimized out>, dummy4=3D<value optimized out>)
> >>       at /usr/src/head/sys/ddb/db_command.c:578
> >> #2  0xffffffff8033e074 in db_command (last_cmdp=3D<value optimized out=
>,
> >>       cmd_table=3D<value optimized out>, dopager=3D1) at
> >> /usr/src/head/sys/ddb/db_command.c:449
> >> #3  0xffffffff8033dd62 in db_command_loop () at
> >> /usr/src/head/sys/ddb/db_command.c:502
> >> #4  0xffffffff80340690 in db_trap (type=3D<value optimized out>, code=
=3D0)
> >>       at /usr/src/head/sys/ddb/db_main.c:231
> >> #5  0xffffffff808b375e in kdb_trap (type=3D3, code=3D0, tf=3D<value op=
timized
> >> out>)
> >>       at /usr/src/head/sys/kern/subr_kdb.c:654
> >> #6  0xffffffff80bfc71a in trap (frame=3D0xffffff8487f478a0)
> >>       at /usr/src/head/sys/amd64/amd64/trap.c:579
> >> #7  0xffffffff80be65b2 in calltrap () at /tmp/exception-3nQ6Cf.s:179
> >> #8  0xffffffff808b2f5e in kdb_enter (why=3D0xffffffff80e5e23b "panic",
> >> msg=3D<value optimized out>)
> >>       at cpufunc.h:63
> >> #9  0xffffffff8088086f in panic (fmt=3D<value optimized out>)
> >>       at /usr/src/head/sys/kern/kern_shutdown.c:628
> >> #10 0xffffffff80adea4a in vm_object_madvise (object=3D<value optimized=
 out>,
> >>       pindex=3D<value optimized out>, end=3D8952, advise=3D<value opti=
mized out>)
> >>       at /usr/src/head/sys/vm/vm_object.c:1101
> >> #11 0xffffffff80ad759a in vm_map_madvise (map=3D0xfffffe0018260188,
> >> start=3D<value optimized out>,
> >>       end=3D<value optimized out>, behav=3D5) at
> >> /usr/src/head/sys/vm/vm_map.c:2140
> >> #12 0xffffffff80adbd8d in sys_madvise (td=3D<value optimized out>,
> >> uap=3D<value optimized out>)
> >>       at /usr/src/head/sys/vm/vm_mmap.c:752
> >> #13 0xffffffff80bfd3a5 in amd64_syscall (td=3D0xfffffe0018230000,
> >> traced=3D0) at subr_syscall.c:135
> >> #14 0xffffffff80be689b in Xfast_syscall () at /tmp/exception-3nQ6Cf.s:=
329
> >> #15 0x00000000016f3bfa in ?? ()
> >
> > I think this is an omission in the check for the object types. BTW, this
> > pattern already repeats in several places, I thought about adding either
> > new pager method, like boolean_t vm_pager_is_pageable(), or just a flag
> > fields to the struct vm_pager to classify the vm objects.
> >
> > I am curious, what was the process which caused the panic ?
>=20
> Clang doing a manual kernel build of my work tree with "make -j8 kernel".
You did not answered my question, what was the process that caused the
panic ? As in, could it be X server ?

>=20
> --=20
> Andre
>=20
> > diff --git a/sys/vm/vm_object.c b/sys/vm/vm_object.c
> > index e19750c..5b8ed23 100644
> > --- a/sys/vm/vm_object.c
> > +++ b/sys/vm/vm_object.c
> > @@ -1060,7 +1060,10 @@ shadowlookup:
> >   			    (tobject->flags & OBJ_ONEMAPPING) =3D=3D 0) {
> >   				goto unlock_tobject;
> >   			}
> > -		} else if (tobject->type =3D=3D OBJT_PHYS)
> > +		} else if (tobject->type =3D=3D OBJT_PHYS ||
> > +		    tobject->type =3D=3D OBJT_SG ||
> > +		    tobject->type =3D=3D OBJT_MGTDEVICE ||
> > +		    tobject->type =3D=3D OBJT_DEVICE)
> >   			goto unlock_tobject;
> >   		m =3D vm_page_lookup(tobject, tpindex);
> >   		if (m =3D=3D NULL && advise =3D=3D MADV_WILLNEED) {
> >

--TN8pJM9vJMHHFgJc
Content-Type: application/pgp-signature

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.19 (FreeBSD)

iEYEARECAAYFAlC04YQACgkQC3+MBN1Mb4hcUwCg6u0MJhVWTPhVtM12xv3EZIw3
08QAni9vFYfIMfIXbaU4Z7kH6nmAGb2e
=lOXC
-----END PGP SIGNATURE-----

--TN8pJM9vJMHHFgJc--



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