Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 3 Oct 2005 10:02:11 -0400 (EDT)
From:      Rob Watt <rob@hudson-trading.com>
To:        freebsd-hackers@freebsd.org
Cc:        rob work <rob@hudson-trading.com>, mikep@hudson-trading.com, Jason Carroll <jason@hudson-trading.com>
Subject:   re: freebsd-5.4-stable panics
Message-ID:  <20051003095203.K90360@daemon.mistermishap.net>

next in thread | raw e-mail | index | archive | help
> 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.

-
Rob Watt



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