Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 27 Nov 2012 17:06:25 +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:  <20121127150625.GJ3013@kib.kiev.ua>
In-Reply-To: <50B4A374.5040705@freebsd.org>
References:  <50B4A374.5040705@freebsd.org>

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

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

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
>=20
> #0  doadump (textdump=3D-2014022336) at pcpu.h:229
> #1  0xffffffff8033e2d2 in db_fncall (dummy1=3D<value optimized out>,=20
> 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=20
> /usr/src/head/sys/ddb/db_command.c:449
> #3  0xffffffff8033dd62 in db_command_loop () at=20
> /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 optim=
ized=20
> 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",=20
> 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 ou=
t>,
>      pindex=3D<value optimized out>, end=3D8952, advise=3D<value optimize=
d out>)
>      at /usr/src/head/sys/vm/vm_object.c:1101
> #11 0xffffffff80ad759a in vm_map_madvise (map=3D0xfffffe0018260188,=20
> start=3D<value optimized out>,
>      end=3D<value optimized out>, behav=3D5) at=20
> /usr/src/head/sys/vm/vm_map.c:2140
> #12 0xffffffff80adbd8d in sys_madvise (td=3D<value optimized out>,=20
> uap=3D<value optimized out>)
>      at /usr/src/head/sys/vm/vm_mmap.c:752
> #13 0xffffffff80bfd3a5 in amd64_syscall (td=3D0xfffffe0018230000,=20
> 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 ?

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) {

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

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

iEYEARECAAYFAlC01vEACgkQC3+MBN1Mb4j9cgCeO9vu/sGtdDSGBCzqytogsdEw
WvwAn3FkmqtYO5m94Ged1eOhqRJqSR59
=fXn/
-----END PGP SIGNATURE-----

--gBYU9MM4gf8jKg2V--



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