Date: Thu, 14 Nov 1996 08:37:29 -0500 (EST) From: Thomas David Rivers <ponds!rivers@dg-rtp.dg.com> To: ponds!freefall.cdrom.com!freebsd-hackers Subject: daily panics - the saga continues... Message-ID: <199611141337.IAA19687@lakes.water.net>
next in thread | raw e-mail | index | archive | help
Well, on some very good advice; I added a printf() to getnewvnode() in vfs_subr.c - to ensure that my good fortune with 5+ days of uptime was actually do to the check of vp->v_usecount. My code in vfs_subr.c now looks like (it's ugly, but I put everything in the left column so I can easily delete it..): if (freevnodes < (numvnodes >> 2) || numvnodes < desiredvnodes || vp == NULL || /* list empty */ vp->v_usecount) /* queue wrapped */ { { if(!(freevnodes < (numvnodes >>2)) && !(numvnodes < desiredvnodes) && !(vp == NULL) && vp->v_usecount) printf("getnewvnode: Allocating new vnode because queue wrapped\n"); } vp = (struct vnode *) malloc((u_long) sizeof *vp, M_VNODE, M_WAITOK); bzero((char *) vp, sizeof *vp); numvnodes++; } else { TAILQ_REMOVE(&vnode_free_list, vp, v_freelist); freevnodes--; I installed that kernel and rebooted... Guess what! At my typical ~3:20 am time, I got a panic, but a different one this time (this is getting stranger and stranger): [The panic does indicate there is a problem in the panic() routine, as the %d should have been replaced with the int... if you check ufs_ihash.c, you'll find this particular panic() call...] Script started on Thu Nov 14 08:25:26 1996 ponds# gdb -k kernel.8 vmcore.8 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...(no debugging symbols found)... IdlePTD 1e4000 current pcb at 1d5484 panic: ufs_ihashget: recursive lock not expected -- pid %d #0 0xf0193ceb in boot () (kgdb) where #0 0xf0193ceb in boot () #1 0xf0112b83 in panic () #2 0xf017bfc1 in ufs_ihashget () #3 0xf017a193 in ffs_vget () #4 0xf017517a in ffs_valloc () #5 0xf0181436 in ufs_makeinode () #6 0xf017edf5 in ufs_create () #7 0xf012cc07 in vn_open () #8 0xf012a43f in open () #9 0xf019c066 in syscall () #10 0xf019152b in Xsyscall () #11 0x33c0 in ?? () #12 0x32cd in ?? () #13 0x327d in ?? () #14 0x31d7 in ?? () #15 0x2f7b in ?? () #16 0x2e76 in ?? () #17 0x3b87 in ?? () #18 0x4854 in ?? () #19 0x474e in ?? () #20 0x467a in ?? () #21 0x1ffe in ?? () #22 0x1e6b in ?? () #23 0x1d21 in ?? () #24 0x16a7 in ?? () #25 0x10d3 in ?? () (kgdb) ponds# Script done on Thu Nov 14 08:26:31 1996 There were no instances of the text from my added printf() in /var/log/messages - so I can only assume this didn't participate in the good fortune I was previously experiencing... I'm *really* stumped now... First, why was I sucessfully running for so long - just luck? Second, one change to the source causes a new/different (although, seemingly related to inode allocation...) panic. I can connect this machine to the internet and provide accounts for anyone who would like to "take a whack" at this problem... As always, I'm open to suggestions/ideas... [I need to order that 4.4BSD book :-) ] - Dave Rivers -
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199611141337.IAA19687>