From owner-freebsd-hackers@FreeBSD.ORG Tue Oct 4 16:04:56 2005 Return-Path: X-Original-To: freebsd-hackers@FreeBSD.org Delivered-To: freebsd-hackers@FreeBSD.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 280F616A41F for ; Tue, 4 Oct 2005 16:04:56 +0000 (GMT) (envelope-from truckman@FreeBSD.org) Received: from gw.catspoiler.org (217-ip-163.nccn.net [209.79.217.163]) by mx1.FreeBSD.org (Postfix) with ESMTP id 9FDE843D45 for ; Tue, 4 Oct 2005 16:04:55 +0000 (GMT) (envelope-from truckman@FreeBSD.org) Received: from FreeBSD.org (mousie.catspoiler.org [192.168.101.2]) by gw.catspoiler.org (8.13.3/8.13.3) with ESMTP id j94G4jFK022218; Tue, 4 Oct 2005 09:04:49 -0700 (PDT) (envelope-from truckman@FreeBSD.org) Message-Id: <200510041604.j94G4jFK022218@gw.catspoiler.org> Date: Tue, 4 Oct 2005 09:04:45 -0700 (PDT) From: Don Lewis To: rob@hudson-trading.com In-Reply-To: <20051003095203.K90360@daemon.mistermishap.net> MIME-Version: 1.0 Content-Type: TEXT/plain; charset=us-ascii Cc: freebsd-hackers@FreeBSD.org, mikep@hudson-trading.com, jason@hudson-trading.com Subject: Re: freebsd-5.4-stable panics X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 04 Oct 2005 16:04:56 -0000 On 3 Oct, Rob Watt wrote: >> It turns out that the sysctl buffer is already wired in one of the two >> cases >> that this function is called, so I moved the wiring up to the upper > layer >> in >> the other case and cut out a bunch of the locking gymnastics as a > result. >> Can you try this patch? >> >> Index: kern_proc.c >> =================================================================== >> RCS file: /usr/cvs/src/sys/kern/kern_proc.c,v >> retrieving revision 1.231 >> diff -u -r1.231 kern_proc.c >> --- kern_proc.c 27 Sep 2005 18:03:15 -0000 1.231 >> +++ kern_proc.c 30 Sep 2005 17:04:57 -0000 >> @@ -875,22 +875,16 @@ >> >> if (flags & KERN_PROC_NOTHREADS) { >> fill_kinfo_proc(p, &kinfo_proc); >> - PROC_UNLOCK(p); >> error = SYSCTL_OUT(req, (caddr_t)&kinfo_proc, >> sizeof(kinfo_proc)); >> - PROC_LOCK(p); >> } else { >> - _PHOLD(p); >> FOREACH_THREAD_IN_PROC(p, td) { >> fill_kinfo_thread(td, &kinfo_proc); >> - PROC_UNLOCK(p); >> error = SYSCTL_OUT(req, (caddr_t)&kinfo_proc, >> sizeof(kinfo_proc)); >> - PROC_LOCK(p); >> if (error) >> break; >> } >> - _PRELE(p); >> } >> PROC_UNLOCK(p); >> if (error) >> @@ -932,6 +926,9 @@ >> if (oid_number == KERN_PROC_PID) { >> if (namelen != 1) >> return (EINVAL); >> + error = sysctl_wire_old_buffer(req, 0); >> + if (error) >> + return (error); >> p = pfind((pid_t)name[0]); >> if (!p) >> return (ESRCH); > > John, > > We tried this patch and were able to run our simulations (and top) for 3 > days straight without crashing. Since we were panicking every 3-6 hours > before when running top, this seems to have fixed the problem. > > We noticed the patches from Don Lewis, but have not tested them yet. We > weren't sure if we could just apply those patches against 6.0-BETA5, or > whether we should wait for them to be MFC'd. I haven't tried applying my patch to RELENG_5 yet, but hope to do so in the next few days in preparation for doing a MFC. If any changes are required, I can send you a copy of the patch.