From owner-freebsd-arch@FreeBSD.ORG Thu Feb 22 22:04:13 2007 Return-Path: X-Original-To: freebsd-arch@freebsd.org Delivered-To: freebsd-arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id D12F716A402; Thu, 22 Feb 2007 22:04:13 +0000 (UTC) (envelope-from delphij@delphij.net) Received: from tarsier.geekcn.org (tarsier.geekcn.org [210.51.165.229]) by mx1.freebsd.org (Postfix) with ESMTP id 8106C13C4AC; Thu, 22 Feb 2007 22:04:13 +0000 (UTC) (envelope-from delphij@delphij.net) Received: from localhost (tarsier.geekcn.org [210.51.165.229]) by tarsier.geekcn.org (Postfix) with ESMTP id 9D301EB5BFB; Fri, 23 Feb 2007 06:04:12 +0800 (CST) X-Virus-Scanned: amavisd-new at geekcn.org Received: from tarsier.geekcn.org ([210.51.165.229]) by localhost (mail.geekcn.org [210.51.165.229]) (amavisd-new, port 10024) with ESMTP id RNZCSEh57o8o; Fri, 23 Feb 2007 06:04:03 +0800 (CST) Received: from [192.168.1.32] (unknown [61.51.106.205]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by tarsier.geekcn.org (Postfix) with ESMTP id 0081CEB5A13; Fri, 23 Feb 2007 06:04:02 +0800 (CST) DomainKey-Signature: a=rsa-sha1; s=default; d=delphij.net; c=nofws; q=dns; h=message-id:date:from:organization:user-agent:mime-version:to:cc: subject:references:in-reply-to:x-enigmail-version:content-type:content-transfer-encoding; b=MR5No777ZMy0tE2N8RH6VoxqEHzCzS0GZU15FD8rCB/G3pcEokzKw3efWkAzCXGb0 Ov/m1fmD90wzIdOIQf55A== Message-ID: <45DE1351.6060901@delphij.net> Date: Fri, 23 Feb 2007 06:04:01 +0800 From: LI Xin Organization: The FreeBSD Project User-Agent: Thunderbird 1.5.0.9 (Macintosh/20061207) MIME-Version: 1.0 To: John Baldwin References: <45CC0EB9.7030400@delphij.net> <200702090837.04495.jhb@freebsd.org> <45DDD816.80303@delphij.net> <200702221639.12751.jhb@freebsd.org> In-Reply-To: <200702221639.12751.jhb@freebsd.org> X-Enigmail-Version: 0.94.1.0 Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: 7bit Cc: freebsd-arch@freebsd.org Subject: Re: Patch for review: resolve a race condition in [sg]etpriority() X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 22 Feb 2007 22:04:13 -0000 -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA512 John Baldwin wrote: > On Thursday 22 February 2007 12:51, LI Xin wrote: >> Hi, John, >> >> John Baldwin wrote: >>> My only reason for favoring the wakeup for complete initialization is that >>> while this patch may solve the getprio/setprio race, it doesn't solve all >>> PRS_NEW-related races, which the sleep/wakeup proposal did. >> Today I have some time and tried your approach for a second time. It >> looks like that we can not simply sleep with allproc_lock held. The >> attached patchset implements the proof-of-concept idea, please let me >> know if you think this one is better. > > Ok. It would actually be really nice if we could not put the process onto > the allproc list until it was really fully created. Is the only reason we put > it on the list to prevent duplicate pid allocation? I tend to disagree with that. Here is a scenario that makes this incorrect for setpriority, somewhat like what I have discussed with Robert earlier: A B (start forking) (copy p2 from p1) (setpriority in PRIO_USER case) <--user identical, but invisible to B (insert p2 into allproc) We end up with p2's priority unset, while p1's set. I think this is not what we want. If this is acceptable, then the easiest solution would be just skip PRS_NEW processes :-) In order to make setpriority() correct, it seems that we should have B either set p2's priority (initialized to a state where B can see it and operate without problem), or have a not-copied p2 if B can not see it, or at least block when the copy is in progress. Cheers, - -- Xin LI http://www.delphij.net/ FreeBSD - The Power to Serve! -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.5 (Darwin) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQFF3hNROfuToMruuMARCly/AJ9a5I8JPTUsIJBi57nkNbllSVUXGgCeIqV0 YKm7guWpFkiFe7Bxvs/Xvck= =9NKM -----END PGP SIGNATURE-----