Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 16 Dec 1997 19:19:15 +0000 (GMT)
From:      Terry Lambert <tlambert@primenet.com>
To:        ivt@gamma.ru (Igor Timkin)
Cc:        tlambert@primenet.com, ivt@gamma.ru, freebsd-hackers@FreeBSD.ORG
Subject:   Re: panic: blkfree: freeling free block/frag
Message-ID:  <199712161919.MAA20145@usr01.primenet.com>
In-Reply-To: <199712161442.RAA24936@crocus.gamma.ru> from "Igor Timkin" at Dec 16, 97 05:42:10 pm

next in thread | previous in thread | raw e-mail | index | archive | help
> ivt@news:/var/tmp/innfeed:2:306>gdb -k /sys/compile/NEWS/kernel /usr/local/news/crash/vmcore.1
> 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 1f0000
> current pcb at 1d79c0
> panic: blkfree: freeing free block
> #0  boot (howto=256) at ../../kern/kern_shutdown.c:266
> 266                                     dumppcb.pcb_cr3 = rcr3();
> (kgdb) where
> #0  boot (howto=256) at ../../kern/kern_shutdown.c:266
> #1  0xe01105e2 in panic (fmt=0xe0188a85 "blkfree: freeing free block")
>     at ../../kern/kern_shutdown.c:390
> #2  0xe0188c57 in ffs_blkfree (ip=0xe3e50500, bno=10, size=4096)
>     at ../../ufs/ffs/ffs_alloc.c:1230
> #3  0xe018b09a in ffs_indirtrunc (ip=0xe3e50500, lbn=-12, dbn=394248, 
>     lastbn=-1, level=0, countp=0xdfbffd9c) at ../../ufs/ffs/ffs_inode.c:500
> #4  0xe018aac8 in ffs_truncate (ap=0xdfbffe74) at ../../ufs/ffs/ffs_inode.c:317
> #5  0xe018e6a5 in ufs_inactive (ap=0xdfbffea0) at vnode_if.h:1003
> #6  0xe012fb3f in vrele (vp=0xe3b12800) at vnode_if.h:699
> #7  0xe012fa33 in vput (vp=0xe3b12800) at ../../kern/vfs_subr.c:858
> #8  0xe0191e80 in ufs_remove (ap=0xdfbffef4) at ../../ufs/ufs/ufs_vnops.c:697
> #9  0xe0131d25 in unlink (p=0xe4dc6e00, uap=0xdfbfff94, retval=0xdfbfff84)
>     at vnode_if.h:459
> #10 0xe01ac1ff in syscall (frame={tf_es = 39, tf_ds = -541130713, tf_edi = 1, 
>       tf_esi = 28736, tf_ebp = -541074456, tf_isp = -541065244, 
>       tf_ebx = 28944, tf_edx = 0, tf_ecx = 41472, tf_eax = 10, tf_trapno = 7, 
>       tf_err = 7, tf_eip = 268950145, tf_cs = 31, tf_eflags = 582, 
>       tf_esp = -541074568, tf_ss = 39}) at ../../i386/i386/trap.c:890
> #11 0x1007da81 in ?? ()
> #12 0x2453 in ?? ()
> #13 0x2914 in ?? ()
> #14 0x1095 in ?? ()

Start at unlink, and look at the arguments all the way down to see
if they are reasonable.

When you find an unreasonable argument, go up one function, and look at
the contents of the auto variables.  See if they are corrupted.

Personally, I am not happy with the vnode/free block management in
FreeBSD, but there's nothing I can do about it to make it more
deterministic.  I'm pretty sure that the race windows have been
nailed closed by increased complexity, so it's probably something
else.


					Terry Lambert
					terry@lambert.org
---
Any opinions in this posting are my own and not those of my present
or previous employers.



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