Date: Sun, 31 May 1998 18:37:18 -0400 From: "Stephane E. Potvin" <sepotvin@videotron.ca> To: current@FreeBSD.ORG Subject: Softded panic Message-ID: <3571DB9E.2C392372@videotron.ca>
next in thread | raw e-mail | index | archive | help
Got the following panic trying to run a make release on my system
FreeBSD alexis.videotron.ca 3.0-CURRENT FreeBSD 3.0-CURRENT #0: Sat May
30 16:53:12 EDT 1998
rubik@alexis.videotron.ca:/mnt/.2/FreeBSD/src/sys/compile/ALEXIS i386
Pentium 166Mhz, 32M RAM
Here is the panic information:
GDB is free software and you are welcome to distribute copies of it
under certain conditions; type "show copying" to see the conditions.
There is absolutely no warranty for GDB; type "show warranty" for
details.
GDB 4.16 (i386-unknown-freebsd),
Copyright 1996 Free Software Foundation, Inc...
IdlePTD 225000
initial pcb at 1ffb04
panicstr: handle_written_inodeblock: live inodedep
panic messages:
---
panic: handle_written_inodeblock: live inodedep
syncing disks...
Fatal trap 12: page fault while in kernel mode
fault virtual address = 0x30
fault code = supervisor read, page not present
instruction pointer = 0x8:0xf013183e
stack pointer = 0x10:0xf01efdc4
frame pointer = 0x10:0xf01efdd0
= DPL 0, pres 1, def32 1, gran 1
processor eflags = interrupt enabled, resume, IOPL = 0
current process = Idle
interrupt mask = bio
trap number = 12
panic: page fault
dumping to dev 20001, offset 196608
dump 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9
8 7 6 5
4 3 2 1
---
#0 boot (howto=260) at ../../kern/kern_shutdown.c:281
281 dumppcb.pcb_cr3 = rcr3();
(kgdb) bt
#0 boot (howto=260) at ../../kern/kern_shutdown.c:281
#1 0xf01160c6 in panic (fmt=0xf01c221f "page fault")
at ../../kern/kern_shutdown.c:421
#2 0xf01c2e6d in trap_fatal (frame=0xf01efd88) at
../../i386/i386/trap.c:879
#3 0xf01c2900 in trap_pfault (frame=0xf01efd88, usermode=0)
at ../../i386/i386/trap.c:772
#4 0xf01c255f in trap (frame={tf_es = 16, tf_ds = 16, tf_edi = 0,
tf_esi = -1073168320, tf_ebp = -266404400, tf_isp = -266404432,
tf_ebx = -248261952, tf_edx = -1073168320, tf_ecx = -266404376,
tf_eax = 0, tf_trapno = 12, tf_err = 0, tf_eip = -267184066, tf_cs
= 8,
tf_eflags = 66118, tf_esp = -248261952, tf_ss = -248261872})
at ../../i386/i386/trap.c:396
#5 0xf013183e in flushdirtybuffers (slpflag=0, slptimeo=0)
at ../../kern/vfs_bio.c:1254
#6 0xf0130853 in bdwrite (bp=0xf133d2c0) at ../../kern/vfs_bio.c:512
#7 0xf0196841 in ffs_update (vp=0xf3242020, access=0xf01efe70,
modify=0xf01efe70, waitfor=0) at ../../ufs/ffs/ffs_inode.c:132
#8 0xf019ee52 in ffs_sync (mp=0xf06c9800, waitfor=2, cred=0xf06c1e00,
p=0xf0219088) at ../../ufs/ffs/ffs_vfsops.c:999
#9 0xf01393e3 in sync (p=0xf0219088, uap=0x0) at
../../kern/vfs_syscalls.c:517
#10 0xf0115cab in boot (howto=256) at ../../kern/kern_shutdown.c:203
#11 0xf01160c6 in panic (
fmt=0xf019ba03 "handle_written_inodeblock: live inodedep")
at ../../kern/kern_shutdown.c:421
#12 0xf019bccf in handle_written_inodeblock (inodedep=0xf087ea80,
bp=0xf1317040) at ../../ufs/ffs/ffs_softdep.c:3240
#13 0xf019b4bb in softdep_disk_write_complete (bp=0xf1317040)
at ../../ufs/ffs/ffs_softdep.c:2921
#14 0xf0132626 in biodone (bp=0xf1317040) at ../../kern/vfs_bio.c:1917
#15 0xf01e5411 in wdintr (unit=0) at ../../i386/isa/wd.c:1419
(kgdb) frame 12
#12 0xf019bccf in handle_written_inodeblock (inodedep=0xf087ea80,
bp=0xf1317040) at ../../ufs/ffs/ffs_softdep.c:3240
3240 panic("handle_written_inodeblock: live
inodedep"
);
(kgdb) print *inodedep
$1 = {id_list = {wk_list = {le_next = 0xf08c8e80, le_prev = 0xf1317164},
wk_type = 1, wk_state = 13}, id_hash = {le_next = 0x0,
le_prev = 0xf06ddc6c}, id_fs = 0xf06ee800, id_ino = 318372,
id_nlinkdelta = 0, id_savedino = 0x0, id_deps = {le_next = 0xf0d71b80,
le_prev = 0xf0c08c58}, id_buf = 0x0, id_savedsize =
0xffffffffffffffff,
id_pendinghd = {lh_first = 0xf0803260}, id_bufwait = {lh_first = 0x0},
id_inowait = {lh_first = 0x0}, id_inoupdt = {tqh_first = 0x0,
tqh_last = 0xf087eac4}, id_newinoupdt = {tqh_first = 0x0,
tqh_last = 0xf087eacc}}
(kgdb) print (struct diradd) *inodedep->id_pendinghd->lh_first
$2 = {da_list = {wk_list = {le_next = 0x0, le_prev = 0xf087eab8},
wk_type = 10, wk_state = 32781}, da_pdlist = {le_next = 0xf08c4d40,
le_prev = 0xf082b8ac}, da_offset = 60, da_newinum = 318372, da_un =
{
dau_previous = 0xf0bf3a00, dau_pagedep = 0xf0bf3a00}}
Seems that a directory buffer hit the disk before the associated inode.
LIST_FIRST(&inodedep->id_pendinghd) != NULL when trying to free the
inodedep
after the buffer had been written to disk.
If I'm completely wrong feel free to laugh but please point me where I'm
mistaken.
Is there a paper somewhere with more detailed informations on the inner
working of softupdates?
Regards
Stephane E. Potvin
POS and Industry Helpdesk
IBM Cadana Ltd.
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3571DB9E.2C392372>
