Date: Wed, 19 Feb 1997 18:05:57 +0200 (EET) From: Heikki Suonsivu <hsu@clinet.fi> To: FreeBSD-gnats-submit@freebsd.org Subject: kern/2771: panic: bad dir Message-ID: <199702191605.SAA03914@news.clinet.fi> Resent-Message-ID: <199702191610.IAA29427@freefall.freebsd.org>
index | next in thread | raw e-mail
>Number: 2771
>Category: kern
>Synopsis: panic: bad dir
>Confidential: no
>Severity: serious
>Priority: high
>Responsible: freebsd-bugs
>State: open
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Wed Feb 19 08:10:04 PST 1997
>Last-Modified:
>Originator: Heikki Suonsivu
>Organization:
Clinet, Espoo, Finland
>Release: FreeBSD 2.2-GAMMA i386
>Environment:
2.2, news server, 128M, 2940
>Description:
hsu#news.clinet.fi Wed 1: gdb -k kernel.4 vmcore.4
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.13 (i386-unknown-freebsd),
Copyright 1994 Free Software Foundation, Inc...
IdlePTD 271000
current pcb at 0x210c98
panic: bad dir
#0 boot (howto=256) at ../../kern/kern_shutdown.c:243
243 dumppcb.pcb_cr3 = rcr3();
(kgdb) bt
#0 boot (howto=256) at ../../kern/kern_shutdown.c:243
#1 0xf0112402 in panic (fmt=0xf01b37d1 "bad dir")
at ../../kern/kern_shutdown.c:367
#2 0xf01b3813 in ufs_dirbad (ip=0xf494ab00, offset=49210,
how=0xf01b2b70 "mangled entry") at ../../ufs/ufs/ufs_lookup.c:589
#3 0xf01b3071 in ufs_lookup (ap=0xefbffe5c) at ../../ufs/ufs/ufs_lookup.c:284
#4 0xf0130619 in lookup (ndp=0xefbfff0c) at vnode_if.h:31
#5 0xf013015b in namei (ndp=0xefbfff0c) at ../../kern/vfs_lookup.c:156
#6 0xf0133a2d in link (p=0xf48b5000, uap=0xefbfff94, retval=0xefbfff84)
at ../../kern/vfs_syscalls.c:894
#7 0xf01cfcef in syscall (frame={tf_es = 39, tf_ds = 39, tf_edi = 1344640,
tf_esi = 1, tf_ebp = -272639824, tf_isp = -272629788, tf_ebx = 20082716,
tf_edx = 28, tf_ecx = -272641940, tf_eax = 9, tf_trapno = 7, tf_err = 7,
tf_eip = 134672897, tf_cs = 31, tf_eflags = 514, tf_esp = -272641840,
tf_ss = 39}) at ../../i386/i386/trap.c:892
#8 0x806f201 in ?? ()
#9 0xcfeb in ?? ()
#10 0xedc7 in ?? ()
#11 0xf477 in ?? ()
#12 0x99eb in ?? ()
#13 0xc592 in ?? ()
#14 0x1096 in ?? ()
(kgdb) up
#1 0xf0112402 in panic (fmt=0xf01b37d1 "bad dir")
at ../../kern/kern_shutdown.c:367
367 boot(bootopt);
(kgdb) up
#2 0xf01b3813 in ufs_dirbad (ip=0xf494ab00, offset=49210,
how=0xf01b2b70 "mangled entry") at ../../ufs/ufs/ufs_lookup.c:589
589 panic("bad dir");
(kgdb) list
584
585 mp = ITOV(ip)->v_mount;
586 (void)printf("%s: bad dir ino %ld at offset %ld: %s\n",
587 mp->mnt_stat.f_mntonname, ip->i_number, offset, how);
588 if ((mp->mnt_stat.f_flags & MNT_RDONLY) == 0)
589 panic("bad dir");
590 }
591
592 /*
593 * Do consistency checking on a directory entry:
(kgdb) print mp
$1 = (struct mount *) 0xf48d8200
(kgdb) print *mp
$2 = {mnt_list = {cqe_next = 0xf48db400, cqe_prev = 0xf48d5000},
mnt_op = 0xf02095c0, mnt_vfc = 0xf02095ec, mnt_vnodecovered = 0xf48c8f80,
mnt_vnodelist = {lh_first = 0xf4e67080}, mnt_flag = 268439552,
mnt_maxsymlinklen = 60, mnt_stat = {f_spare2 = 0, f_bsize = 1024,
f_iosize = 8192, f_blocks = 2893614, f_bfree = 641136, f_bavail = 409647,
f_files = 1966078, f_ffree = 1073865, f_fsid = {val = {1148, 1}},
f_owner = 0, f_type = 1, f_flags = 268439552, f_spare = {0, 0, 0, 0, 0,
0}, f_mntonname = "/m/news/news3", '\000' <repeats 76 times>,
f_mntfromname = "/dev/sd15e", '\000' <repeats 79 times>},
mnt_data = 0xf48dbc00, mnt_time = 0}
(kgdb) set radix 16
Input and output radices now set to decimal 16, hex 10, octal 20.
(kgdb) print *mp
$3 = {mnt_list = {cqe_next = 0xf48db400, cqe_prev = 0xf48d5000},
mnt_op = 0xf02095c0, mnt_vfc = 0xf02095ec, mnt_vnodecovered = 0xf48c8f80,
mnt_vnodelist = {lh_first = 0xf4e67080}, mnt_flag = 0x10001000,
mnt_maxsymlinklen = 0x3c, mnt_stat = {f_spare2 = 0x0, f_bsize = 0x400,
f_iosize = 0x2000, f_blocks = 0x2c272e, f_bfree = 0x9c870,
f_bavail = 0x6402f, f_files = 0x1dfffe, f_ffree = 0x1062c9, f_fsid = {
val = {0x47c, 0x1}}, f_owner = 0x0, f_type = 0x1, f_flags = 0x10001000,
f_spare = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
f_mntonname = "/m/news/news3", '\000' <repeats 76 times>,
f_mntfromname = "/dev/sd15e", '\000' <repeats 79 times>},
mnt_data = 0xf48dbc00, mnt_time = 0x0}
(kgdb)
Dumps are available on request.
>How-To-Repeat:
Run a busy news server with 2.2
>Fix:
>Audit-Trail:
>Unformatted:
help
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199702191605.SAA03914>
