Date: Fri, 5 Jan 2007 15:08:57 +0000 From: Ceri Davies <ceri@submonkey.net> To: Robert Watson <rwatson@FreeBSD.org> Cc: stable@FreeBSD.org Subject: Re: (audit?) Panic in 6.2-PRERELEASE Message-ID: <20070105150857.GC7088@submonkey.net> In-Reply-To: <20070105133028.F98541@fledge.watson.org> References: <20070105111954.GA51511@submonkey.net> <20070105120539.H46119@fledge.watson.org> <20070105131528.GB7088@submonkey.net> <20070105133028.F98541@fledge.watson.org>
next in thread | previous in thread | raw e-mail | index | archive | help
--NKoe5XOeduwbEQHU
Content-Type: multipart/mixed; boundary="VrqPEDrXMn8OVzN4"
Content-Disposition: inline
--VrqPEDrXMn8OVzN4
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
On Fri, Jan 05, 2007 at 01:34:04PM +0000, Robert Watson wrote:
>=20
> On Fri, 5 Jan 2007, Ceri Davies wrote:
>=20
> >>Much as I would love to trust the contents of ub there, I suspect they=
=20
> >>can't be trusted. Could you print the contents of *fp in kern_fstat() =
in=20
> >>both of those stacks? I'd particularly like to know the value of=20
> >>fp->f_type, and then depending on the type, possibly the contents of=20
> >>*(struct vnode *)fp->f_vnode for DTYPE_VNODE/TYPE_FIFO or *(struct sock=
et=20
> >>*)fp->f_data in the case of DTYPE_SOCKET.
> >
> >Can you tell me how to get at *fp given that the stack trace shows fstat=
()=20
> >and not kern_fstat()? Sorry if I'm being dumb but I don't know how to=
=20
> >step into the kern_fstat() call from fstat().
>=20
> It could be that the stack is hosed losing the frame, or maybe it's inlin=
ed=20
> (more likely the former I think, as kern_fstat() is a symbol used elsewhe=
re=20
> in the kernel). The best bet may be to use the file descriptor number=20
> (uap->fd) to pull the struct file reference out of the process. Somethin=
g=20
> on the order of (td->td_proc->p_fd->fd_ofiles[fd]) should return the righ=
t=20
> struct file *.
OK, got it. They're both sockets, data in the attachments.
> How reproduceable is this?
So far it's happened this morning and yesterday morning. I haven't seen
it before that. I don't know the cause so I can't reproduce it at will,
but the logs don't give any indication. Chances are that it will happen
again tomorrow, but we'll see.
Thanks,
Ceri
--=20
That must be wonderful! I don't understand it at all.
-- Moliere
--VrqPEDrXMn8OVzN4
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename=panic1
Content-Transfer-Encoding: quoted-printable
{root@shrike}-{~} # kgdb /usr/obj/usr/src/sys/SHRIKE/kernel.debug /var/cras=
h/vmcore.29
kgdb: kvm_nlist(_stopped_cpus):=20
kgdb: kvm_nlist(_stoppcbs):=20
[GDB will not be able to debug user-mode threads: /usr/lib/libthread_db.so:=
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:
Fatal trap 12: page fault while in kernel mode
fault virtual address =3D 0x53892047
fault code =3D supervisor write, page not present
instruction pointer =3D 0x20:0xc05cda7c
stack pointer =3D 0x28:0xd610dc48
frame pointer =3D 0x28:0xd610dc60
code segment =3D base 0x0, limit 0xfffff, type 0x1b
=3D DPL 0, pres 1, def32 1, gran 1
processor eflags =3D interrupt enabled, resume, IOPL =3D 0
current process =3D 65381 (imapd)
trap number =3D 12
panic: page fault
Uptime: 5d19h44m40s
Dumping 503 MB (2 chunks)
chunk 0: 1MB (160 pages) ... ok
chunk 1: 503MB (128752 pages) 487 471 455 439 423 407 391 375 359 343 327=
311 295 279 263 247 231 215 199 183 167 151 135 119 103 87 71 55 39 23 7
#0 doadump () at pcpu.h:165
165 pcpu.h: No such file or directory.
in pcpu.h
(kgdb) up 8
#8 0xc04c470d in fstat (td=3D0xc2eeb180, uap=3D0xd610dc74) at /usr/src/sys=
/kern/kern_descrip.c:1075
1075 error =3D kern_fstat(td, uap->fd, &ub);
(kgdb) p *td->td_proc->p_fd->fd_ofiles
$1 =3D (struct file *) 0xc32f73f0
(kgdb) p*$1
$2 =3D {f_list =3D {le_next =3D 0xc32ddd38, le_prev =3D 0xc4062048}, f_type=
=3D 2, f_data =3D 0xc38f62c8,=20
f_flag =3D 3, f_mtxp =3D 0xc2a67154, f_ops =3D 0xc06b1040, f_cred =3D 0xc=
2e4a580, f_count =3D 3,=20
f_vnode =3D 0x0, f_offset =3D 0, f_vnread_flags =3D 0, f_gcflag =3D 0, f_=
msgcount =3D 0, f_seqcount =3D 0,=20
f_nextoff =3D 0, f_label =3D 0x0}
(kgdb) p $2->f_data
$3 =3D (void *) 0xc38f62c8
(kgdb) p *(struct socket *)$2->f_data
$4 =3D {so_count =3D 1, so_type =3D 1, so_options =3D 4, so_linger =3D 0, s=
o_state =3D 2, so_qstate =3D 0,=20
so_pcb =3D 0xc38eaec4, so_proto =3D 0xc06b8148, so_head =3D 0x0, so_incom=
p =3D {tqh_first =3D 0x0,=20
tqh_last =3D 0x0}, so_comp =3D {tqh_first =3D 0x0, tqh_last =3D 0x0}, s=
o_list =3D {tqe_next =3D 0x0,=20
tqe_prev =3D 0xc2e5087c}, so_qlen =3D 0, so_incqlen =3D 0, so_qlimit =
=3D 0, so_timeo =3D 0,=20
so_error =3D 0, so_sigio =3D 0x0, so_oobmark =3D 0, so_aiojobq =3D {tqh_f=
irst =3D 0x0,=20
tqh_last =3D 0xc38f6310}, so_rcv =3D {sb_sel =3D {si_thrlist =3D {tqe_n=
ext =3D 0x0,=20
tqe_prev =3D 0xc2eeb1b0}, si_thread =3D 0x0, si_note =3D {kl_list =
=3D {slh_first =3D 0x0},=20
kl_lock =3D 0xc04cd13c <knlist_mtx_lock>, kl_unlock =3D 0xc04cd170 =
<knlist_mtx_unlock>,=20
kl_locked =3D 0xc04cd1ac <knlist_mtx_locked>, kl_lockarg =3D 0xc38f=
633c}, si_flags =3D 0},=20
sb_mtx =3D {mtx_object =3D {lo_class =3D 0xc06ad4c4, lo_name =3D 0xc068=
133e "so_rcv",=20
lo_type =3D 0xc068133e "so_rcv", lo_flags =3D 196608, lo_list =3D {=
tqe_next =3D 0x0,=20
tqe_prev =3D 0x0}, lo_witness =3D 0x0}, mtx_lock =3D 4, mtx_recur=
se =3D 0}, sb_state =3D 0,=20
sb_mb =3D 0x0, sb_mbtail =3D 0x0, sb_lastrecord =3D 0x0, sb_cc =3D 0, s=
b_hiwat =3D 66608, sb_mbcnt =3D 0,=20
sb_mbmax =3D 262144, sb_ctl =3D 0, sb_lowat =3D 1, sb_timeo =3D 0, sb_f=
lags =3D 0}, so_snd =3D {sb_sel =3D {
si_thrlist =3D {tqe_next =3D 0x0, tqe_prev =3D 0x0}, si_thread =3D 0x=
0, si_note =3D {kl_list =3D {
slh_first =3D 0x0}, kl_lock =3D 0xc04cd13c <knlist_mtx_lock>,=20
kl_unlock =3D 0xc04cd170 <knlist_mtx_unlock>, kl_locked =3D 0xc04cd=
1ac <knlist_mtx_locked>,=20
kl_lockarg =3D 0xc38f63b4}, si_flags =3D 0}, sb_mtx =3D {mtx_object=
=3D {lo_class =3D 0xc06ad4c4,=20
lo_name =3D 0xc0681337 "so_snd", lo_type =3D 0xc0681337 "so_snd", l=
o_flags =3D 196608,=20
lo_list =3D {tqe_next =3D 0x0, tqe_prev =3D 0x0}, lo_witness =3D 0x=
0}, mtx_lock =3D 4,=20
mtx_recurse =3D 0}, sb_state =3D 0, sb_mb =3D 0x0, sb_mbtail =3D 0x0,=
sb_lastrecord =3D 0x0,=20
sb_cc =3D 0, sb_hiwat =3D 33304, sb_mbcnt =3D 0, sb_mbmax =3D 262144, s=
b_ctl =3D 0, sb_lowat =3D 2048,=20
sb_timeo =3D 0, sb_flags =3D 0}, so_upcall =3D 0, so_upcallarg =3D 0x0,=
so_cred =3D 0xc2a7ad00,=20
so_label =3D 0x0, so_peerlabel =3D 0x0, so_gencnt =3D 92385, so_emuldata =
=3D 0x0, so_accf =3D 0x0}
(kgdb)
--VrqPEDrXMn8OVzN4
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename=panic2
Content-Transfer-Encoding: quoted-printable
{root@shrike}=1B[m-{~} # kgdb /usr/obj/usr/src/sys/SHRIKE/kernel.debug /var=
/crash/vmcore.30
kgdb: kvm_nlist(_stopped_cpus):=20
kgdb: kvm_nlist(_stoppcbs):=20
[GDB will not be able to debug user-mode threads: /usr/lib/libthread_db.so:=
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:
Fatal trap 12: page fault while in kernel mode
fault virtual address =3D 0x53892047
fault code =3D supervisor write, page not present
instruction pointer =3D 0x20:0xc05cda7c
stack pointer =3D 0x28:0xd617ec48
frame pointer =3D 0x28:0xd617ec60
code segment =3D base 0x0, limit 0xfffff, type 0x1b
=3D DPL 0, pres 1, def32 1, gran 1
processor eflags =3D interrupt enabled, resume, IOPL =3D 0
current process =3D 9943 (imapd)
trap number =3D 12
panic: page fault
Uptime: 22h39m3s
Dumping 503 MB (2 chunks)
chunk 0: 1MB (160 pages) ... ok
chunk 1: 503MB (128752 pages) 487 471 455 439 423 407 391 375 359 343 327=
311 295 279 263 247 231 215 199 183 167 151 135 119 103 87 71 55 39 23 7
#0 doadump () at pcpu.h:165
165 pcpu.h: No such file or directory.
in pcpu.h
(kgdb) up 8
#8 0xc04c470d in fstat (td=3D0xc3109300, uap=3D0xd617ec74) at /usr/src/sys=
/kern/kern_descrip.c:1075
1075 error =3D kern_fstat(td, uap->fd, &ub);
(kgdb) p *td->td_proc->p_fd->fd_ofiles
$1 =3D (struct file *) 0xc33fd1f8
(kgdb) p *$1
$2 =3D {f_list =3D {le_next =3D 0xc30a6678, le_prev =3D 0xc3790b88}, f_type=
=3D 2, f_data =3D 0xc347f590,=20
f_flag =3D 3, f_mtxp =3D 0xc2a67a30, f_ops =3D 0xc06b1040, f_cred =3D 0xc=
3592a80, f_count =3D 3,=20
f_vnode =3D 0x0, f_offset =3D 0, f_vnread_flags =3D 0, f_gcflag =3D 0, f_=
msgcount =3D 0, f_seqcount =3D 0,=20
f_nextoff =3D 0, f_label =3D 0x0}
(kgdb) p *(struct socket *)$2->f_data
$3 =3D {so_count =3D 1, so_type =3D 1, so_options =3D 4, so_linger =3D 0, s=
o_state =3D 2, so_qstate =3D 0,=20
so_pcb =3D 0xc317b168, so_proto =3D 0xc06b8148, so_head =3D 0x0, so_incom=
p =3D {tqh_first =3D 0x0,=20
tqh_last =3D 0x0}, so_comp =3D {tqh_first =3D 0x0, tqh_last =3D 0x0}, s=
o_list =3D {tqe_next =3D 0x0,=20
tqe_prev =3D 0xc2e5ab44}, so_qlen =3D 0, so_incqlen =3D 0, so_qlimit =
=3D 0, so_timeo =3D 0,=20
so_error =3D 0, so_sigio =3D 0x0, so_oobmark =3D 0, so_aiojobq =3D {tqh_f=
irst =3D 0x0,=20
tqh_last =3D 0xc347f5d8}, so_rcv =3D {sb_sel =3D {si_thrlist =3D {tqe_n=
ext =3D 0x0,=20
tqe_prev =3D 0xc3109330}, si_thread =3D 0x0, si_note =3D {kl_list =
=3D {slh_first =3D 0x0},=20
kl_lock =3D 0xc04cd13c <knlist_mtx_lock>, kl_unlock =3D 0xc04cd170 =
<knlist_mtx_unlock>,=20
kl_locked =3D 0xc04cd1ac <knlist_mtx_locked>, kl_lockarg =3D 0xc347=
f604}, si_flags =3D 0},=20
sb_mtx =3D {mtx_object =3D {lo_class =3D 0xc06ad4c4, lo_name =3D 0xc068=
133e "so_rcv",=20
lo_type =3D 0xc068133e "so_rcv", lo_flags =3D 196608, lo_list =3D {=
tqe_next =3D 0x0,=20
tqe_prev =3D 0x0}, lo_witness =3D 0x0}, mtx_lock =3D 4, mtx_recur=
se =3D 0}, sb_state =3D 0,=20
sb_mb =3D 0x0, sb_mbtail =3D 0x0, sb_lastrecord =3D 0x0, sb_cc =3D 0, s=
b_hiwat =3D 66608, sb_mbcnt =3D 0,=20
sb_mbmax =3D 262144, sb_ctl =3D 0, sb_lowat =3D 1, sb_timeo =3D 0, sb_f=
lags =3D 0}, so_snd =3D {sb_sel =3D {
si_thrlist =3D {tqe_next =3D 0x0, tqe_prev =3D 0x0}, si_thread =3D 0x=
0, si_note =3D {kl_list =3D {
slh_first =3D 0x0}, kl_lock =3D 0xc04cd13c <knlist_mtx_lock>,=20
kl_unlock =3D 0xc04cd170 <knlist_mtx_unlock>, kl_locked =3D 0xc04cd=
1ac <knlist_mtx_locked>,=20
kl_lockarg =3D 0xc347f67c}, si_flags =3D 0}, sb_mtx =3D {mtx_object=
=3D {lo_class =3D 0xc06ad4c4,=20
lo_name =3D 0xc0681337 "so_snd", lo_type =3D 0xc0681337 "so_snd", l=
o_flags =3D 196608,=20
lo_list =3D {tqe_next =3D 0x0, tqe_prev =3D 0x0}, lo_witness =3D 0x=
0}, mtx_lock =3D 4,=20
mtx_recurse =3D 0}, sb_state =3D 0, sb_mb =3D 0x0, sb_mbtail =3D 0x0,=
sb_lastrecord =3D 0x0,=20
sb_cc =3D 0, sb_hiwat =3D 33304, sb_mbcnt =3D 0, sb_mbmax =3D 262144, s=
b_ctl =3D 0, sb_lowat =3D 2048,=20
sb_timeo =3D 0, sb_flags =3D 0}, so_upcall =3D 0, so_upcallarg =3D 0x0,=
so_cred =3D 0xc2a7ad00,=20
so_label =3D 0x0, so_peerlabel =3D 0x0, so_gencnt =3D 22107, so_emuldata =
=3D 0x0, so_accf =3D 0x0}
(kgdb)
--VrqPEDrXMn8OVzN4--
--NKoe5XOeduwbEQHU
Content-Type: application/pgp-signature
Content-Disposition: inline
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (FreeBSD)
iD8DBQFFnmoJocfcwTS3JF8RAvRrAJ0cIWI5KunoJMHvGiGdyFp3FfNYAgCgtMY7
FcV0jf4O/FUWBUijhF8d+4U=
=sSv7
-----END PGP SIGNATURE-----
--NKoe5XOeduwbEQHU--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20070105150857.GC7088>
