From owner-freebsd-current Fri Jan 15 18:04:39 1999 Return-Path: Received: (from majordom@localhost) by hub.freebsd.org (8.8.8/8.8.8) id SAA18763 for freebsd-current-outgoing; Fri, 15 Jan 1999 18:04:39 -0800 (PST) (envelope-from owner-freebsd-current@FreeBSD.ORG) Received: from janus.syracuse.net (janus.syracuse.net [205.232.47.15]) by hub.freebsd.org (8.8.8/8.8.8) with ESMTP id SAA18758 for ; Fri, 15 Jan 1999 18:04:36 -0800 (PST) (envelope-from green@unixhelp.org) Received: from localhost (green@localhost) by janus.syracuse.net (8.8.8/8.8.7) with ESMTP id VAA26206 for ; Fri, 15 Jan 1999 21:04:41 -0500 (EST) Date: Fri, 15 Jan 1999 21:04:41 -0500 (EST) From: Brian Feldman X-Sender: green@janus.syracuse.net To: freebsd-current@FreeBSD.ORG Subject: trap in ufs_lookup Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG I've got a crash in ufs_lookup, and I'm trying to assess responsibility. I use SoftUpdates on all drives and _MAY_ have some bad RAM. This crash was during a make -j4 -DNOCLEAN world, and maybe it may be due to SoftUpdates not completely having finished the dir, but I'm thinking it could've been RAM corruption. Someone help me :) 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 2899968 initial pcb at 2425ec panicstr: vm_fault: fault on nofault entry, addr: f3748000 panic messages: --- panic: vm_fault: fault on nofault entry, addr: f3748000 syncing disks... 234 232 223 198 167 150 123 92 63 19 11 1 1 1 1 1 1 1 1 1 givin g up dumping to dev 30001, offset 40960 dump 79 78 77 76 75 74 73 72 71 70 69 68 67 66 65 64 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 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=256) at ../../kern/kern_shutdown.c:285 285 dumppcb.pcb_cr3 = rcr3(); (kgdb) bt #0 boot (howto=256) at ../../kern/kern_shutdown.c:285 #1 0xf01383d5 in panic ( fmt=0xf0211d86 "vm_fault: fault on nofault entry, addr: %lx") at ../../kern/kern_shutdown.c:446 #2 0xf01a297e in vm_fault (map=0xf025e014, vaddr=4084498432, fault_type=1 '\001', fault_flags=0) at ../../vm/vm_fault.c:232 #3 0xf01da750 in trap_pfault (frame=0xf7c46cd0, usermode=0, eva=4084499165) at ../../i386/i386/trap.c:824 #4 0xf01da3f2 in trap (frame={tf_es = 16, tf_ds = 16, tf_edi = 21209, tf_esi = -247132928, tf_ebp = -138121840, tf_isp = -138121992, tf_ebx = -210468135, tf_edx = -222954112, tf_ecx = 8191, tf_eax = 37593, tf_trapno = 12, tf_err = 0, tf_eip = -266750417, tf_cs = 8, tf_eflags = 66178, tf_esp = -138278720, tf_ss = -138121524}) at ../../i386/i386/trap.c:437 #5 0xf019b62f in ufs_lookup (ap=0xf7c46dcc) at ../../ufs/ufs/ufs_lookup.c:238 #6 0xf01a03e9 in ufs_vnoperate (ap=0xf7c46dcc) at ../../ufs/ufs/ufs_vnops.c:2294 #7 0xf0157f30 in vfs_cache_lookup (ap=0xf7c46e28) at vnode_if.h:55 #8 0xf01a03e9 in ufs_vnoperate (ap=0xf7c46e28) at ../../ufs/ufs/ufs_vnops.c:2294 #9 0xf015a405 in lookup (ndp=0xf7c46ea8) at vnode_if.h:31 #10 0xf0159ed8 in namei (ndp=0xf7c46ea8) at ../../kern/vfs_lookup.c:152 #11 0xf015f5a0 in stat (p=0xf7b8b3c0, uap=0xf7c46f84) ---Type to continue, or q to quit--- at ../../kern/vfs_syscalls.c:1614 #12 0xf01dad47 in syscall (frame={tf_es = 39, tf_ds = 39, tf_edi = 136292736, tf_esi = 0, tf_ebp = -272644404, tf_isp = -138121260, tf_ebx = 134749056, tf_edx = 12, tf_ecx = 134749056, tf_eax = 188, tf_trapno = 12, tf_err = 2, tf_eip = 134580048, tf_cs = 31, tf_eflags = 582, tf_esp = -272644524, tf_ss = 39}) at ../../i386/i386/trap.c:1100 #13 0xf01cd85c in Xint0x80_syscall () #14 0x8050303 in ?? () #15 0x8049761 in ?? () #16 0x8057a79 in ?? () #17 0x8057a45 in ?? () #18 0x80496e8 in ?? () #19 0x8057a79 in ?? () #20 0x8057a45 in ?? () #21 0x80496e8 in ?? () #22 0x8057a79 in ?? () #23 0x8057a45 in ?? () #24 0x80496e8 in ?? () #25 0x8049aa0 in ?? () #26 0x804fd0f in ?? () #27 0x80480e9 in ?? () (kgdb) frame 5 #5 0xf019b62f in ufs_lookup (ap=0xf7c46dcc) at ../../ufs/ufs/ufs_lookup.c:238 238 ep = (struct direct *)((char *)bp->b_data + entryoffseti nblock); (kgdb) l 233 * Full validation checks are slow, so we only check 234 * enough to insure forward progress through the 235 * directory. Complete checks can be run by patching 236 * "dirchk" to be true. 237 */ 238 ep = (struct direct *)((char *)bp->b_data + entryoffseti nblock); 239 if (ep->d_reclen == 0 || 240 (dirchk && ufs_dirbadentry(vdp, ep, entryoffsetinblo ck))) { 241 int i; 242 (kgdb) printf "%p + %d\n", bp->b_data, entryoffset^Ht^Ginblock 0xf3743000 + 21209 (kgdb) printf "%d: %s\n", p->p_pid ^H ^H, p->p_comm 68863: make #relevant code: bmask = VFSTOUFS(vdp->v_mount)->um_mountp->mnt_stat.f_iosize - 1; if (nameiop != LOOKUP || dp->i_diroff == 0 || dp->i_diroff > dp->i_size) { entryoffsetinblock = 0; dp->i_offset = 0; numdirpasses = 1; } else { dp->i_offset = dp->i_diroff; if ((entryoffsetinblock = dp->i_offset & bmask) && (error = UFS_BLKATOFF(vdp, (off_t)dp->i_offset, NULL, &bp))) return (error); numdirpasses = 2; nchstats.ncs_2passes++; } (kgdb) printf "i_offset %d & bmask %d = %d\n", dp->i_offset, bmask, (dp->i_offset & bmask) i_offset 37593 & bmask 8191 = 4825 (kgdb) quit Brian Feldman _ __ ___ ___ ___ green@unixhelp.org _ __ ___ | _ ) __| \ http://www.freebsd.org/ _ __ ___ ____ | _ \__ \ |) | FreeBSD: The Power to Serve! _ __ ___ ____ _____ |___/___/___/ To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message