From owner-freebsd-bugs@FreeBSD.ORG Sun Nov 18 17:23:53 2007 Return-Path: Delivered-To: freebsd-bugs@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 50EB716A494 for ; Sun, 18 Nov 2007 17:23:53 +0000 (UTC) (envelope-from shcheklein@gmail.com) Received: from nz-out-0506.google.com (nz-out-0506.google.com [64.233.162.238]) by mx1.freebsd.org (Postfix) with ESMTP id 0F27813C457 for ; Sun, 18 Nov 2007 17:23:52 +0000 (UTC) (envelope-from shcheklein@gmail.com) Received: by nz-out-0506.google.com with SMTP id l8so1105360nzf for ; Sun, 18 Nov 2007 09:23:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=beta; h=domainkey-signature:received:received:message-id:date:from:to:subject:mime-version:content-type; bh=1R6+3tb6mCzyijIyGfXgzDm5PAgKWrvwA9D1+NyaqTs=; b=fPzNqnA6GsUrPhUXmdv9WRr2bCAk18YDq2BVdmVNHogmcYm9wzDPkxoKxaYjC+YahpQPTO9QIwtrXDymKnDC8l0pEpZabeirAfni6l0IIMMjXUV9owv9XtfN5a9VhEYSdzN+1/mo3q6jA8dlQu02DEaFBxiwOPtKlQaGQ6TP7WY= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=beta; h=received:message-id:date:from:to:subject:mime-version:content-type; b=pEJZanxZh9BCS2ac2QosAySPTSBsoVb15MmRSAHiWTyTnB7d93mpRcfo/s4UNinL0yV2sIod1GVkNqVf6t54MsAejexb0/0WytU7n3ewUFWF/GGd8Cmhh6Woz9Hur7v7DtavjIOeRYFUGqUyDS1eHfvm8BD8pZBhnuIz/nBLmgc= Received: by 10.142.212.19 with SMTP id k19mr913687wfg.1195405169126; Sun, 18 Nov 2007 08:59:29 -0800 (PST) Received: by 10.142.52.2 with HTTP; Sun, 18 Nov 2007 08:59:29 -0800 (PST) Message-ID: <3034886f0711180859r1c9d8c17n82d2f89158197d9b@mail.gmail.com> Date: Sun, 18 Nov 2007 19:59:29 +0300 From: "Ivan Shcheklein" To: freebsd-bugs@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline X-Content-Filtered-By: Mailman/MimeDel 2.1.5 Subject: Bug in semop() in multiprocess environment? X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 18 Nov 2007 17:23:53 -0000 Hi All, It seems to me that there is a bug in the semop() code: After wakeup we see the following: /* * The semaphore is still alive. Readjust the count of * waiting processes. */ if (sopptr->sem_op == 0) semptr->semzcnt--; else semptr->semncnt--; It seems to me that "semptr" can be invalid after wakeup. For example, semaphore's base can be changed after remove called on another previously created semaphore. I think semptr must be renewed after wakeup. Ivan Shcheklein