Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 7 Dec 2005 08:47:04 +0100
From:      Yuri Khotyaintsev <yuri@irfu.se>
To:        John Baldwin <jhb@freebsd.org>
Cc:        freebsd-hackers@freebsd.org, freebsd-stable@freebsd.org
Subject:   Re: Fatal trap 12: page fault while in kernel mode
Message-ID:  <200512070847.04980.yuri@irfu.se>
In-Reply-To: <200512020854.20959.jhb@freebsd.org>
References:  <200512021100.03167.yuri@irfu.se> <200512020854.20959.jhb@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Friday 02 December 2005 14.54, John Baldwin wrote:
> On Friday 02 December 2005 05:00 am, Yuri Khotyaintsev wrote:
> > I have the following panic occurring several times a week. The machine =
is
> > an NFS server, and it usually panics early in the morning, when first
> > people try to access it. After reboot it may work OK for 1-2 days, and
> > then panics again. I have tried changing memory and replacing disk which
> > was exported via NFS, but nothing helped :(
> >
> > Any suggestion on how to fix this panic will be very much appreciated !
>
> This panic (in propagate_priority) is usually caused when a thread goes to
> sleep while holding a mutex (which is forbidden).  If you enable INVARIAN=
TS
> and/or WITNESS you should get a better panic, and with WITNESS you will
> even be warned when a thread goes to sleep while holding a mutex.  Howeve=
r,
> these options do introduce considerable execution overhead, and sometimes
> that overhead changes the timing enough to hide the race. :(

Here are the two panics which I got with INVARIANTS and WITNESS enabled.

# kgdb /usr/obj/usr/src/sys/HEM.DEBUG/kernel.debug vmcore.8=20
[GDB will not be able to debug user-mode threads: /usr/lib/libthread_db.so:=
=20
Undefined symbol "ps_pglobal_lookup"]
GNU gdb 6.1.1 [FreeBSD]
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain condition=
s.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i386-marcel-freebsd".

Unread portion of the kernel message buffer:
Memory modified after free 0xc4759e00(508) val=3D0 @ 0xc4759e00
panic: Most recently used by UFS dirhash

Uptime: 11h8m36s
Dumping 511 MB (2 chunks)
  chunk 0: 1MB (160 pages) ... ok
  chunk 1: 511MB (130800 pages) 495 479 463 447 431 415 399 383 367 351 335=
=20
319 303 287 271 255 239 223 207 191 175 159 143 127 111 95 79 63 47 31 15

#0  doadump () at pcpu.h:165
165	pcpu.h: No such file or directory.
	in pcpu.h
(kgdb) where
#0  doadump () at pcpu.h:165
#1  0xc050fd4f in boot (howto=3D260) at /usr/src/sys/kern/kern_shutdown.c:3=
99
#2  0xc0510043 in panic (fmt=3D0xc06dccbb "Most recently used by %s\n")
    at /usr/src/sys/kern/kern_shutdown.c:555
#3  0xc0648ccf in mtrash_ctor (mem=3D0xc4759e00, size=3D0, arg=3D0x0, flags=
=3D2)
    at /usr/src/sys/vm/uma_dbg.c:137
#4  0xc06469c1 in uma_zalloc_arg (zone=3D0xc104d980, udata=3D0x0, flags=3D2)
    at /usr/src/sys/vm/uma_core.c:1850
#5  0xc05043cd in malloc (size=3D400, mtp=3D0xc06fb700, flags=3D2) at uma.h=
:275
#6  0xc063fba9 in ufs_readdir (ap=3D0xd56eaaec)
    at /usr/src/sys/ufs/ufs/ufs_vnops.c:1846
#7  0xc06a61cc in VOP_READDIR_APV (vop=3D0x0, a=3D0xd56eaaec) at vnode_if.c=
:1427
#8  0xc0607716 in nfsrv_readdir (nfsd=3D0xc4368c00, slp=3D0x0, td=3D0xc3326=
780,=20
    mrq=3D0xd56eac80) at vnode_if.h:746
#9  0xc060fa5b in nfssvc_nfsd (td=3D0x0)
    at /usr/src/sys/nfsserver/nfs_syscalls.c:472
#10 0xc060f280 in nfssvc (td=3D0xc3326780, uap=3D0xd56ead04)
    at /usr/src/sys/nfsserver/nfs_syscalls.c:181
#11 0xc069b6b0 in syscall (frame=3D
=2D--Type <return> to continue, or q <return> to quit---
      {tf_fs =3D 59, tf_es =3D 59, tf_ds =3D 59, tf_edi =3D 0, tf_esi =3D 0=
, tf_ebp =3D=20
=2D1077941464, tf_isp =3D -714166940, tf_ebx =3D 0, tf_edx =3D -1077936144,=
 tf_ecx =3D=20
1, tf_eax =3D 155, tf_trapno =3D 12, tf_err =3D 2, tf_eip =3D 671852067, tf=
_cs =3D 51,=20
tf_eflags =3D 582, tf_esp =3D -1077941492, tf_ss =3D 59})=20
at /usr/src/sys/i386/i386/trap.c:981
#12 0xc068947f in Xint0x80_syscall ()=20
at /usr/src/sys/i386/i386/exception.s:200
#13 0x00000033 in ?? ()
Previous frame inner to this frame (corrupt stack?)
(kgdb) quit

# kgdb /usr/obj/usr/src/sys/HEM.DEBUG/kernel.debug vmcore.9
[GDB will not be able to debug user-mode threads: /usr/lib/libthread_db.so:=
=20
Undefined symbol "ps_pglobal_lookup"]
GNU gdb 6.1.1 [FreeBSD]
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain condition=
s.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i386-marcel-freebsd".

Unread portion of the kernel message buffer:
Memory modified after free 0xc5172800(508) val=3D0 @ 0xc5172800
panic: Most recently used by UFS dirhash

Uptime: 1d1h7m17s
Dumping 511 MB (2 chunks)
  chunk 0: 1MB (160 pages) ... ok
  chunk 1: 511MB (130800 pages) 495 479 463 447 431 415 399 383 367 351 335=
=20
319 303 287 271 255 239 223 207 191 175 159 143 127 111 95 79 63 47 31 15

#0  doadump () at pcpu.h:165
165	pcpu.h: No such file or directory.
	in pcpu.h
(kgdb) where
#0  doadump () at pcpu.h:165
#1  0xc050fd4f in boot (howto=3D260) at /usr/src/sys/kern/kern_shutdown.c:3=
99
#2  0xc0510043 in panic (fmt=3D0xc06dccbb "Most recently used by %s\n")
    at /usr/src/sys/kern/kern_shutdown.c:555
#3  0xc0648ccf in mtrash_ctor (mem=3D0xc5172800, size=3D0, arg=3D0x0, flags=
=3D257)
    at /usr/src/sys/vm/uma_dbg.c:137
#4  0xc06469c1 in uma_zalloc_arg (zone=3D0xc104d980, udata=3D0x0, flags=3D2=
57)
    at /usr/src/sys/vm/uma_core.c:1850
#5  0xc05043cd in malloc (size=3D368, mtp=3D0xc070eb60, flags=3D257) at uma=
=2Eh:275
#6  0xc063729b in ufsdirhash_build (ip=3D0xc55664a4)
    at /usr/src/sys/ufs/ufs/ufs_dirhash.c:184
#7  0xc0639441 in ufs_lookup (ap=3D0xd57c283c)
    at /usr/src/sys/ufs/ufs/ufs_lookup.c:192
#8  0xc06a4e0a in VOP_CACHEDLOOKUP_APV (vop=3D0x0, a=3D0xd57c283c)
    at vnode_if.c:150
#9  0xc0565e3b in vfs_cache_lookup (ap=3D0x0) at vnode_if.h:82
#10 0xc06a4d2f in VOP_LOOKUP_APV (vop=3D0xc070eee0, a=3D0xd57c28e4)
    at vnode_if.c:99
#11 0xc056a8d0 in lookup (ndp=3D0xd57c2bec) at vnode_if.h:56
=2D--Type <return> to continue, or q <return> to quit---
#12 0xc060df58 in nfs_namei (ndp=3D0xd57c2bec, fhp=3D0x0, len=3D0, slp=3D0x=
0, nam=3D0x0,=20
    mdp=3D0xd57c2a04, dposp=3D0xd57c2a08, retdirp=3D0xd57c29f0, v3=3D8,=20
    retdirattrp=3D0x0, retdirattr_retp=3D0x0, td=3D0xc350a780, pubflag=3D0)
    at /usr/src/sys/nfsserver/nfs_srvsubs.c:780
#13 0xc05fd284 in nfsrv_lookup (nfsd=3D0xc5764100, slp=3D0x0, td=3D0xc350a7=
80,=20
    mrq=3D0xd57c2c80) at /usr/src/sys/nfsserver/nfs_serv.c:517
#14 0xc060fa5b in nfssvc_nfsd (td=3D0x0)
    at /usr/src/sys/nfsserver/nfs_syscalls.c:472
#15 0xc060f280 in nfssvc (td=3D0xc350a780, uap=3D0xd57c2d04)
    at /usr/src/sys/nfsserver/nfs_syscalls.c:181
#16 0xc069b6b0 in syscall (frame=3D
      {tf_fs =3D 59, tf_es =3D 59, tf_ds =3D 59, tf_edi =3D 0, tf_esi =3D 0=
, tf_ebp =3D=20
=2D1077941464, tf_isp =3D -713282204, tf_ebx =3D 0, tf_edx =3D -1077936144,=
 tf_ecx =3D=20
1, tf_eax =3D 155, tf_trapno =3D 12, tf_err =3D 2, tf_eip =3D 671852067, tf=
_cs =3D 51,=20
tf_eflags =3D 582, tf_esp =3D -1077941492, tf_ss =3D 59})=20
at /usr/src/sys/i386/i386/trap.c:981
#17 0xc068947f in Xint0x80_syscall ()=20
at /usr/src/sys/i386/i386/exception.s:200
#18 0x00000033 in ?? ()
Previous frame inner to this frame (corrupt stack?)
(kgdb) exit
Undefined command: "exit".  Try "help".
(kgdb) quit

=2D-=20
Dr. Yuri Khotyaintsev
Institutet f=F6r rymdfysik (IRF), Uppsala



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