From owner-freebsd-hackers Thu Nov 14 07:20:51 1996 Return-Path: owner-hackers Received: (from root@localhost) by freefall.freebsd.org (8.7.5/8.7.3) id HAA14730 for hackers-outgoing; Thu, 14 Nov 1996 07:20:51 -0800 (PST) Received: from dg-rtp.dg.com (dg-rtp.rtp.dg.com [128.222.1.2]) by freefall.freebsd.org (8.7.5/8.7.3) with SMTP id HAA14717 for ; Thu, 14 Nov 1996 07:20:40 -0800 (PST) Received: by dg-rtp.dg.com (5.4R3.10/dg-rtp-v02) id AA04507; Thu, 14 Nov 1996 10:20:07 -0500 Received: from ponds by dg-rtp.dg.com.rtp.dg.com; Thu, 14 Nov 1996 10:20 EST Received: from lakes.water.net (lakes [10.0.0.3]) by ponds.water.net (8.7.5/8.7.3) with ESMTP id IAA10830 for ; Thu, 14 Nov 1996 08:36:03 -0500 (EST) Received: (from rivers@localhost) by lakes.water.net (8.7.5/8.6.9) id IAA19687 for freebsd-hackers@freefall.cdrom.com; Thu, 14 Nov 1996 08:37:29 -0500 (EST) Date: Thu, 14 Nov 1996 08:37:29 -0500 (EST) From: Thomas David Rivers Message-Id: <199611141337.IAA19687@lakes.water.net> To: ponds!freefall.cdrom.com!freebsd-hackers Subject: daily panics - the saga continues... Content-Type: text Sender: owner-hackers@FreeBSD.ORG X-Loop: FreeBSD.org Precedence: bulk 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 -