From owner-freebsd-hackers@FreeBSD.ORG Mon Feb 14 13:57:40 2005 Return-Path: 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 6448616A4EF for ; Mon, 14 Feb 2005 13:57:40 +0000 (GMT) Received: from comsys.ntu-kpi.kiev.ua (comsys.ntu-kpi.kiev.ua [195.245.194.142]) by mx1.FreeBSD.org (Postfix) with ESMTP id 1289B43D3F for ; Mon, 14 Feb 2005 13:57:25 +0000 (GMT) (envelope-from simon@comsys.ntu-kpi.kiev.ua) Received: from pm514-9.comsys.ntu-kpi.kiev.ua (pm514-9.comsys.ntu-kpi.kiev.ua [10.18.54.109]) (authenticated bits=0)j1EDxxl0005122 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Mon, 14 Feb 2005 16:00:00 +0200 (EET) Received: by pm514-9.comsys.ntu-kpi.kiev.ua (Postfix, from userid 1000) id 5387A155; Mon, 14 Feb 2005 15:57:06 +0200 (EET) Date: Mon, 14 Feb 2005 15:57:06 +0200 From: Andrey Simonenko To: Ashwin Chandra Message-ID: <20050214135706.GA581@pm514-9.comsys.ntu-kpi.kiev.ua> References: <000c01c5126f$354f81c0$58e243a4@ash> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <000c01c5126f$354f81c0$58e243a4@ash> User-Agent: Mutt/1.4.2.1i X-Spam-Status: No, score=-4.4 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00 autolearn=ham version=3.0.1 X-Spam-Checker-Version: SpamAssassin 3.0.1 (2004-10-22) on comsys.ntu-kpi.kiev.ua X-Virus-Scanned: ClamAV 0.80/706/Mon Feb 14 02:14:02 2005 clamav-milter version 0.80j on comsys.ntu-kpi.kiev.ua X-Virus-Status: Clean cc: freebsd-hackers@freebsd.org Subject: Re: Kernel Monitor? X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 14 Feb 2005 13:57:40 -0000 > FOREACH_PROC_IN_SYSTEM(p) { > mtx_lock(&Giant); > PROC_LOCK(p); > printf("%d %d\n", (int)p->p_stats->p_ru.ru_isrss, (int)p->p_stats->p_ru.ru_idrss); > PROC_UNLOCK(p); > mtx_unlock(&Giant); > } This code is incorrect, because you should get sx_slock(&allproc_lock) before FOREACH_PROC_IN_SYSTEM and release sx_sunlock(&allproc_lock) after this loop. If you don't do this, then p in some iteration will point to nothing. Locking Giant, as I understand, here is not required (even vefore FOREACH_...).