Date: Wed, 16 Apr 1997 07:01:38 -0400 (EDT) From: Thomas David Rivers <ponds!rivers@dg-rtp.dg.com> To: ponds!root.com!dg, ponds!freebsd.org!hackers, ponds!cdsnet.net!mrcpu, ponds!lakes.water.net!rivers Subject: Re: More 2.2.1 panics: Message-ID: <199704161101.HAA02544@lakes.water.net>
next in thread | raw e-mail | index | archive | help
This is one of the prototypical PANICs I have been seeing since 2.1.0 on my news server. If you'll look back in the mail archives for "dup alloc panics", and "daily panics". You'll see all of the information I've been able to dig up on the problem so far. I have a small reproduction of the problem - but I'm no longer convinced it is the same one... what I see in that is that: 1) a disk block is marked free 2) a write is performed to update the inode 3) the bits don't actually get out to the disk 4) a subsequent alloc reads the (older bits) from the disk; notes that disk inode already is allocated and does a "dup alloc" panic. You can see, if you make a slight change you can get: 1) A free inode is allocated 2) A write is performed to update the inode on disk. 3) The bits don't actually get out to the disk. 4) The allocated inode is freed, a read of the (older bits) indicate the inode wasn't allocated - you get a "freeing free inode" panic. I've duplicated the first situation in my small test-machine. But, my news/mail server experiences both of these... Something that helps reduce the frequency of the panics is to rebuild the file system; since that reduces the chance of hitting a previously-used inode. But that's a temporary fix, the problem quickly returns. If you'd let me know your hardware situation, that may possible help as well. - Dave Rivers - > > > UFS errors make me nervous... > > # gdb -k kernel.20 vmcore.20 > 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 8df000 > current pcb at 1e7fc8 > panic: blkfree: freeing free block > #0 boot (howto=256) at ../../kern/kern_shutdown.c:243 > 243 dumppcb.pcb_cr3 = rcr3(); > (kgdb) where > #0 boot (howto=256) at ../../kern/kern_shutdown.c:243 > #1 0xf0112df3 in panic (fmt=0xf0192a2d "blkfree: freeing free block") > at ../../kern/kern_shutdown.c:367 > #2 0xf0192bff in ffs_blkfree (ip=0xf4db4a00, bno=29776, size=8192) > at ../../ufs/ffs/ffs_alloc.c:1230 > #3 0xf0194c7e in ffs_truncate (ap=0xefbffdf8) at > ../../ufs/ffs/ffs_inode.c:343 > #4 0xf0198be5 in ufs_inactive (ap=0xefbffe2c) at vnode_if.h:1003 > #5 0xf013214f in vrele (vp=0xf4dcc780) at vnode_if.h:699 > #6 0xf01ac615 in vnode_pager_dealloc (object=0xf4ec8100) > at ../../vm/vnode_pager.c:203 > #7 0xf01abafa in vm_pager_deallocate (object=0xf4ec8100) > at ../../vm/vm_pager.c:177 > #8 0xf01a6bb4 in vm_object_terminate (object=0xf4ec8100) > at ../../vm/vm_object.c:416 > #9 0xf01a69ef in vm_object_deallocate (object=0xf4ec8100) > at ../../vm/vm_object.c:353 > #10 0xf013208e in vrele (vp=0xf4dcc780) at ../../kern/vfs_subr.c:881 > #11 0xf0132003 in vput (vp=0xf4dcc780) at ../../kern/vfs_subr.c:858 > #12 0xf019c0ec in ufs_remove (ap=0xefbffef8) at > ../../ufs/ufs/ufs_vnops.c:695 > #13 0xf013441d in unlink (p=0xf4a20c00, uap=0xefbfff94, retval=0xefbfff84) > at vnode_if.h:459 > #14 0xf01be32f in syscall (frame={tf_es = -272695257, tf_ds = -272695257, > tf_edi = 34197, tf_esi = -272640440, tf_ebp = -272640088, > ---Type <return> to continue, or q <return> to quit--- > tf_isp = -272629788, tf_ebx = 1, tf_edx = -272641536, tf_ecx = 0, > tf_eax = 10, tf_trapno = 7, tf_err = 7, tf_eip = 268845169, tf_cs = > 31, > tf_eflags = 530, tf_esp = -272640484, tf_ss = 39}) > at ../../i386/i386/trap.c:890 > #15 0x10064071 in ?? () > #16 0x2c98 in ?? () > #17 0x1095 in ?? () > > >
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199704161101.HAA02544>