Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 28 Apr 1996 11:52:29 +0300 (EET DST)
From:      Heikki Suonsivu <hsu@clinet.fi>
To:        FreeBSD-gnats-submit@freebsd.org
Subject:   kern/1160: Panic: bad dir
Message-ID:  <199604280852.LAA00843@katiska.clinet.fi>
Resent-Message-ID: <199604280900.CAA19342@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         1160
>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:   Sun Apr 28 02:00:02 PDT 1996
>Last-Modified:
>Originator:     Heikki Suonsivu
>Organization:
Clinet, Espoo, Finland
>Release:        FreeBSD 2.2-CURRENT i386
>Environment:

news server with a full feed.  nfs server.

Apr 28 11:35:03 news /kernel: FreeBSD 2.2-CURRENT #20: Sun Apr 21 23:59:52 EET DST 1996
Apr 28 11:35:03 news /kernel:     hsu@news.clinet.fi:/usr/current/src/sys/compile/CLINETSERVER
Apr 28 11:35:03 news /kernel: CPU: Pentium (89.80-MHz 586-class CPU)
Apr 28 11:35:03 news /kernel:   Origin = "GenuineIntel"  Id = 0x525  Stepping=5
Apr 28 11:35:03 news /kernel:   Features=0x1bf<FPU,VME,DE,PSE,TSC,MSR,MCE,CX8>
Apr 28 11:35:03 news /kernel: real memory  = 67108864 (65536K bytes)
Apr 28 11:35:03 news /kernel: avail memory = 54681600 (53400K bytes)
Apr 28 11:35:03 news /kernel: DEVFS: ready for devices
Apr 28 11:35:03 news /kernel: Probing for devices on PCI bus 0:
Apr 28 11:35:03 news /kernel: chip0 <generic PCI bridge (vendor=1039 device=5511 subclass=0)> rev 0 on pci0:0
Apr 28 11:35:03 news /kernel: chip1 <SiS 85c503> rev 1 on pci0:1:0
Apr 28 11:35:03 news /kernel: pci0:1:1: Silicon Integrated Systems, device=0x5513, class=storage (ide) int a irq ?? [no driver assigned]
Apr 28 11:35:03 news /kernel: ahc0 <Adaptec 2940 Ultra SCSI host adapter> rev 0 int a irq 10 on pci0:9
Apr 28 11:35:03 news /kernel: ahc0: aic7880 Single Channel, SCSI Id=7, 16 SCBs
Apr 28 11:35:03 news /kernel: ahc0 waiting for scsi devices to settle
Apr 28 11:35:03 news /kernel: (ahc0:0:0): "SEAGATE ST15230N 0638" type 0 fixed SCSI 2
Apr 28 11:35:03 news /kernel: sd0(ahc0:0:0): Direct-Access 4095MB (8386733 512 byte sectors)
Apr 28 11:35:03 news /kernel: sd0(ahc0:0:0): with 3992 cyls, 19 heads, and an average 110 sectors/track
Apr 28 11:35:03 news /kernel: (ahc0:1:0): "SEAGATE ST15230N 0638" type 0 fixed SCSI 2
Apr 28 11:35:04 news /kernel: sd1(ahc0:1:0): Direct-Access 4095MB (8386733 512 byte sectors)
Apr 28 11:35:04 news /kernel: sd1(ahc0:1:0): with 3992 cyls, 19 heads, and an average 110 sectors/track
Apr 28 11:35:04 news /kernel: (ahc0:2:0): "SEAGATE ST15230N 0638" type 0 fixed SCSI 2
Apr 28 11:35:04 news /kernel: sd2(ahc0:2:0): Direct-Access 4095MB (8386733 512 byte sectors)
Apr 28 11:35:04 news /kernel: sd2(ahc0:2:0): with 3992 cyls, 19 heads, and an average 110 sectors/track
Apr 28 11:35:04 news /kernel: (ahc0:3:0): "SEAGATE ST31200N 9348" type 0 fixed SCSI 2
Apr 28 11:35:04 news /kernel: sd3(ahc0:3:0): Direct-Access 1011MB (2072435 512 byte sectors)
Apr 28 11:35:04 news /kernel: sd3(ahc0:3:0): with 2700 cyls, 9 heads, and an average 85 sectors/track
Apr 28 11:35:04 news /kernel: de0 <Digital DC21040 Ethernet> rev 35 int a irq 11 on pci0:11
Apr 28 11:35:04 news /kernel: de0: DC21040 [10Mb/s] pass 2.3 Ethernet address 00:c0:95:ec:47:a3
Apr 28 11:35:04 news /kernel: de0: enabling Thinwire/AUI port
Apr 28 11:35:04 news /kernel: Probing for devices on the ISA bus:
Apr 28 11:35:04 news /kernel: vt0 at 0x60-0x6f irq 1 on motherboard
Apr 28 11:35:04 news /kernel: vt0: generic, 80/132 col, color, 8 scr, mf2-kbd, [R3.20-b24]
Apr 28 11:35:04 news /kernel: ed0 not found at 0x280
Apr 28 11:35:04 news /kernel: lpt0 not found at 0xffffffff
Apr 28 11:35:04 news /kernel: lpt1 not found at 0xffffffff
Apr 28 11:35:04 news /kernel: sio0 not found at 0x3f8
Apr 28 11:35:05 news /kernel: sio1 not found at 0x2f8
Apr 28 11:35:05 news /kernel: cy0 not found
Apr 28 11:35:05 news /kernel: bt0 not found at 0x330
Apr 28 11:35:05 news /kernel: aha0 not found at 0x330
Apr 28 11:35:05 news /kernel: wdc0 not found at 0x1f0
Apr 28 11:35:05 news /kernel: fdc0 at 0x3f0-0x3f7 irq 6 drq 2 on isa
Apr 28 11:35:05 news /kernel: fdc0: NEC 72065B
Apr 28 11:35:05 news /kernel: fd0: 1.44MB 3.5in
Apr 28 11:35:05 news /kernel: matcdc0 not found at 0x230
Apr 28 11:35:05 news /kernel: npx0 on motherboard
Apr 28 11:35:05 news /kernel: npx0: INT 16 interface
Apr 28 11:35:05 news /kernel: changing root device to sd0a
Apr 28 11:35:05 news /kernel: devfs ready to run
Apr 28 11:35:05 news /kernel: new masks: bio c0000440, tty c0030802, net c0030802
Apr 28 11:35:05 news /kernel: WARNING: / was not properly dismounted.

>Description:

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 ac6000
current pcb at 224aa8
panic: bad dir
#0  boot (howto=256) at ../../i386/i386/machdep.c:941
941                                     dumppcb.pcb_ptd = rcr3();
(kgdb) bt
#0  boot (howto=256) at ../../i386/i386/machdep.c:941
#1  0xf011ad27 in panic (fmt=0xf01af551 "bad dir") at ../../kern/subr_prf.c:133
#2  0xf01af593 in ufs_dirbad (ip=0xf2f9cb00, offset=8192, 
    how=0xf01ae8f0 "mangled entry") at ../../ufs/ufs/ufs_lookup.c:589
#3  0xf01aedf1 in ufs_lookup (ap=0xefbffe54) at ../../ufs/ufs/ufs_lookup.c:284
#4  0xf0132866 in lookup (ndp=0xefbfff00) at ./vnode_if.h:31
#5  0xf0132380 in namei (ndp=0xefbfff00) at ../../kern/vfs_lookup.c:149
#6  0xf0135c44 in link (p=0xf2dfce00, uap=0xefbfff94, retval=0xefbfff84)
    at ../../kern/vfs_syscalls.c:894
#7  0xf01cfa4d in syscall (frame={tf_es = 39, tf_ds = 39, tf_edi = 9523924, 
      tf_esi = 2, tf_ebp = -272639304, tf_isp = -272629788, tf_ebx = 12222497, 
      tf_edx = -272640954, tf_ecx = -272641424, tf_eax = 9, tf_trapno = 7, 
      tf_err = 7, tf_eip = 134570837, tf_cs = 31, tf_eflags = 582, 
      tf_esp = -272641340, tf_ss = 39}) at ../../i386/i386/trap.c:904
#8  0xf01c7865 in Xsyscall ()
#9  0xc367 in ?? ()
#10 0xdc49 in ?? ()
#11 0x8faf in ?? ()
#12 0xb9a0 in ?? ()
#13 0x1096 in ?? ()
(kgdb) up
#1  0xf011ad27 in panic (fmt=0xf01af551 "bad dir") at ../../kern/subr_prf.c:133
133             boot(bootopt);
(kgdb) up
#2  0xf01af593 in ufs_dirbad (ip=0xf2f9cb00, offset=8192, 
    how=0xf01ae8f0 "mangled entry") at ../../ufs/ufs/ufs_lookup.c:589
589                     panic("bad dir");
(kgdb) up
#3  0xf01aedf1 in ufs_lookup (ap=0xefbffe54) at ../../ufs/ufs/ufs_lookup.c:284
284                             ufs_dirbad(dp, dp->i_offset, "mangled entry");
(kgdb) list
279                     ep = (struct direct *)((char *)bp->b_data + entryoffsetnblock);
280                     if (ep->d_reclen == 0 ||
281                         (dirchk && ufs_dirbadentry(vdp, ep, entryoffsetinblck))) {
282                             int i;
283
284                             ufs_dirbad(dp, dp->i_offset, "mangled entry");
285                             i = DIRBLKSIZ - (entryoffsetinblock & (DIRBLKSI - 1));
286                             dp->i_offset += i;
287                             entryoffsetinblock += i;
288                             continue;
(kgdb) print ep->d_reclen
$1 = 0
(kgdb) print dirchk
$2 = 1
(kgdb) print vdp
$3 = (struct vnode *) 0xf2f94480
(kgdb) print *vdp
$4 = {v_flag = 0, v_usecount = 1, v_writecount = 0, v_holdcnt = 3, 
  v_lastr = 0, v_id = 4670, v_mount = 0xf2d29400, v_op = 0xf2c2ad00, 
  v_freelist = {tqe_next = 0xf2f6cc00, tqe_prev = 0xf2f9d7a0}, v_mntvnodes = {
    le_next = 0xf2f99c80, le_prev = 0xf2f9d7a8}, v_cleanblkhd = {
    lh_first = 0xf4c47bd8}, v_dirtyblkhd = {lh_first = 0x0}, v_numoutput = 0, 
  v_type = VDIR, v_un = {vu_mountedhere = 0x0, vu_socket = 0x0, 
    vu_specinfo = 0x0, vu_fifoinfo = 0x0}, v_lease = 0x0, v_lastw = 0, 
  v_cstart = 0, v_lasta = 0, v_clen = 0, v_ralen = 0, v_usage = 32, 
  v_maxra = 0, v_object = 0x0, v_tag = VT_UFS, v_data = 0xf2f9cb00}
(kgdb) print ep
$5 = (struct direct *) 0xf2d23000
(kgdb) print *ep
$6 = {d_ino = 0, d_reclen = 0, d_type = 0 '\000', d_namlen = 0 '\000', 
  d_name = '\000' <repeats 255 times>}
(kgdb) print entryoffsetinblock
$7 = 0
(kgdb) up
#4  0xf0132866 in lookup (ndp=0xefbfff00) at ./vnode_if.h:31
31              return (VCALL(dvp, VOFFSET(vop_lookup), &a));
(kgdb) print dvp
$8 = (struct vnode *) 0xf2f94480
(kgdb) print *dvp
$9 = {v_flag = 0, v_usecount = 1, v_writecount = 0, v_holdcnt = 3, 
  v_lastr = 0, v_id = 4670, v_mount = 0xf2d29400, v_op = 0xf2c2ad00, 
  v_freelist = {tqe_next = 0xf2f6cc00, tqe_prev = 0xf2f9d7a0}, v_mntvnodes = {
    le_next = 0xf2f99c80, le_prev = 0xf2f9d7a8}, v_cleanblkhd = {
    lh_first = 0xf4c47bd8}, v_dirtyblkhd = {lh_first = 0x0}, v_numoutput = 0, 
  v_type = VDIR, v_un = {vu_mountedhere = 0x0, vu_socket = 0x0, 
    vu_specinfo = 0x0, vu_fifoinfo = 0x0}, v_lease = 0x0, v_lastw = 0, 
  v_cstart = 0, v_lasta = 0, v_clen = 0, v_ralen = 0, v_usage = 32, 
  v_maxra = 0, v_object = 0x0, v_tag = VT_UFS, v_data = 0xf2f9cb00}
(kgdb) print vop_lookup
No symbol "vop_lookup" in current context.
(kgdb) print a
$10 = {a_desc = 0xf02000bc, a_dvp = 0xf2f94480, a_vpp = 0xefbfff10, 
  a_cnp = 0xefbfff24}
(kgdb) up
#5  0xf0132380 in namei (ndp=0xefbfff00) at ../../kern/vfs_lookup.c:149
149                     error = lookup(ndp);
(kgdb) print ndp
$11 = (struct nameidata *) 0xefbfff00
(kgdb) print *ndp
$12 = {ni_dirp = 0xefbfd434 "qc/politique/10119", ni_segflg = UIO_USERSPACE, 
  ni_startdir = 0x0, ni_rootdir = 0xf2c86d00, ni_vp = 0x0, 
  ni_dvp = 0xf2f94480, ni_pathlen = 1, ni_next = 0xf2d3ac12 "", 
  ni_loopcnt = 0, ni_cnd = {cn_nameiop = 1, cn_flags = 49160, 
    cn_proc = 0xf2dfce00, cn_cred = 0xf2dfd080, 
    cn_pnbuf = 0xf2d3ac00 "qc/politique/10119", 
    cn_nameptr = 0xf2d3ac0d "10119", cn_namelen = 5, cn_hash = 252, 
    cn_consume = 0}}
(kgdb) up
#6  0xf0135c44 in link (p=0xf2dfce00, uap=0xefbfff94, retval=0xefbfff84)
    at ../../kern/vfs_syscalls.c:894
894                     error = namei(&nd);
(kgdb) print nd
$13 = {ni_dirp = 0xefbfd434 "qc/politique/10119", ni_segflg = UIO_USERSPACE, 
  ni_startdir = 0x0, ni_rootdir = 0xf2c86d00, ni_vp = 0x0, 
  ni_dvp = 0xf2f94480, ni_pathlen = 1, ni_next = 0xf2d3ac12 "", 
  ni_loopcnt = 0, ni_cnd = {cn_nameiop = 1, cn_flags = 49160, 
    cn_proc = 0xf2dfce00, cn_cred = 0xf2dfd080, 
    cn_pnbuf = 0xf2d3ac00 "qc/politique/10119", 
    cn_nameptr = 0xf2d3ac0d "10119", cn_namelen = 5, cn_hash = 252, 
    cn_consume = 0}}
(kgdb) up   
#7  0xf01cfa4d in syscall (frame={tf_es = 39, tf_ds = 39, tf_edi = 9523924, 
      tf_esi = 2, tf_ebp = -272639304, tf_isp = -272629788, tf_ebx = 12222497, 
      tf_edx = -272640954, tf_ecx = -272641424, tf_eax = 9, tf_trapno = 7, 
      tf_err = 7, tf_eip = 134570837, tf_cs = 31, tf_eflags = 582, 
      tf_esp = -272641340, tf_ss = 39}) at ../../i386/i386/trap.c:904
904             error = (*callp->sy_call)(p, args, rval);
(kgdb) up
#8  0xf01c7865 in Xsyscall ()
(kgdb) down
#7  0xf01cfa4d in syscall (frame={tf_es = 39, tf_ds = 39, tf_edi = 9523924, 
      tf_esi = 2, tf_ebp = -272639304, tf_isp = -272629788, tf_ebx = 12222497, 
      tf_edx = -272640954, tf_ecx = -272641424, tf_eax = 9, tf_trapno = 7, 
      tf_err = 7, tf_eip = 134570837, tf_cs = 31, tf_eflags = 582, 
      tf_esp = -272641340, tf_ss = 39}) at ../../i386/i386/trap.c:904
904             error = (*callp->sy_call)(p, args, rval);
(kgdb) print p
$14 = (struct proc *) 0xf2dfce00
(kgdb) print args
$15 = {-272639908, -272640972, 0, -272629844, -266512682, 7, 80428, 0}
(kgdb) print rval
$16 = {0, -272640954}
(kgdb) print callp->sy_call
$17 = (int (*)()) 0xf0135ba4 <link>
(kgdb) print *callp
$18 = {sy_narg = 2, sy_call = 0xf0135ba4 <link>}
(kgdb) print *p   
$19 = {p_forw = 0xf024ece0, p_back = 0x0, p_list = {le_next = 0xf2dfa700, 
    le_prev = 0xf2dc3208}, p_cred = 0xf2dd0900, p_fd = 0xf2dfd000, 
  p_stats = 0xf6e1b258, p_limit = 0xf020f950, p_vmspace = 0xf2dfcc00, 
  p_sigacts = 0xf6e1b128, p_flag = 4, p_stat = 2 '\002', p_pad1 = "À­Þ", 
  p_pid = 250, p_pglist = {le_next = 0xf3121800, le_prev = 0xf2dd08e8}, 
  p_pptr = 0xf2c73600, p_sibling = {le_next = 0xf2dfa700, 
    le_prev = 0xf2dffb40}, p_children = {lh_first = 0xf3121800}, p_oppid = 0, 
  p_dupfd = 0, p_estcpu = 268, p_cpticks = 13, p_pctcpu = 1455, p_wchan = 0x0, 
  p_wmesg = 0xf012fd20 "biowait", p_swtime = 11274, p_slptime = 0, 
  p_realtimer = {it_interval = {tv_sec = 0, tv_usec = 0}, it_value = {
      tv_sec = 0, tv_usec = 0}}, p_rtime = {tv_sec = 812, tv_usec = 528765}, 
  p_uticks = 20015, p_sticks = 82354, p_iticks = 4106, p_traceflag = 0, 
  p_tracep = 0x0, p_siglist = 0, p_textvp = 0xf2dfdb00, p_lock = 0 '\000', 
  p_pad2 = "\000\000", p_locks = 0, p_simple_locks = 0, p_hash = {
    le_next = 0x0, le_prev = 0xf2c693e8}, p_sigmask = 0, 
  p_sigignore = 410157063, p_sigcatch = 544768, p_priority = 16 '\020', 
  p_usrpri = 113 'q', p_nice = -2 'þ', 
  p_comm = "innd\000tart\000\000\000\000\000\000\000", p_pgrp = 0xf2dd08e0, 
  p_sysent = 0xf0201c50, p_rtprio = {type = 1, prio = 0}, p_addr = 0xf6e1b000, 
  p_md = {md_flags = 0, md_regs = 0xefbfffbc}, p_xstat = 0, p_acflag = 1, 
  p_ru = 0x0}
(kgdb)

dumps are in ftp://ftp.clinet.fi/pub/FreeBSD/crashdumps/*.66.gz within 15
minutes of submitting this PR...

>How-To-Repeat:

This has happened approximately twice a day after switching kernel from
28th april.

This may have something to do with news filesystem mounts being async (but
before this panic I had checked out all the news filesystems repeating
until all the problems were gone (fsck does not fix mangled directories
correctly, so they need to be clri'd separetely).

>Fix:

>Audit-Trail:
>Unformatted:



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