delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2012/02/15/15:46:21

X-Recipient: archive-cygwin AT delorie DOT com
X-Spam-Check-By: sourceware.org
Date: Wed, 15 Feb 2012 21:45:21 +0100
From: Corinna Vinschen <corinna-cygwin AT cygwin DOT com>
To: cygwin AT cygwin DOT com
Subject: Re: STC for libapr1 failure
Message-ID: <20120215204521.GB27454@calimero.vinschen.de>
Reply-To: cygwin AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
References: <4F3A14A8 DOT 4090506 AT acm DOT org> <20120214140240 DOT GB25918 AT calimero DOT vinschen DOT de> <20120214144551 DOT GC25918 AT calimero DOT vinschen DOT de> <4F3AA0BB DOT 7000806 AT acm DOT org> <20120214182452 DOT GK25918 AT calimero DOT vinschen DOT de> <4F3AD58A DOT 9040106 AT acm DOT org> <20120215153851 DOT GQ25918 AT calimero DOT vinschen DOT de> <4F3C09D9 DOT 6000406 AT acm DOT org>
MIME-Version: 1.0
In-Reply-To: <4F3C09D9.6000406@acm.org>
User-Agent: Mutt/1.5.21 (2010-09-15)
Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Id: <cygwin.cygwin.com>
List-Unsubscribe: <mailto:cygwin-unsubscribe-archive-cygwin=delorie DOT com AT cygwin DOT com>
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com

On Feb 15 11:39, David Rothenberger wrote:
> On 2/15/2012 7:38 AM, Corinna Vinschen wrote:
> > Did I mention that I hate synchronization problems?  Anyway, I think I
> > found the problem.  I applied a patch which fixes the problem for me
> > and, surprise!, the flock test still runs fine, too.  I've just uploaded
> > a new snapshot.  Please give it a try.
> 
> All the procmutex tests pass now! Awesome!
> 
> But... now one of the flock tests is failing. It takes a while to
> extract a STC from the APR test suite because everything is written in
> APR-ese and I have to convert every APR call into the base C library
> calls. I'll work on that over the next day or three.
> 
> The gist of the test that's failing is this:
> 
>  * Create a file.
>  * Get an exclusive flock on it.
>  * Spawn a child process that attempts to get an exclusive, non-blocking
>    lock on the file.
> 
> The test is expecting that the child will not be able to get the lock,
> but the child is able to.

Did I really mention that I hate synchronization problems?

Does it fork/exec or does it only exec?  If the latter, and if the child
uses the file descriptor inherited from the parent, then it's ok that
it gets the lock, afaics.  From the Linux man page:

   Locks  created by flock() are associated with an open file table entry.
   This means that duplicate file descriptors (created  by,  for  example,
   fork(2)  or  dup(2)) refer to the same lock, and this lock may be modi‐
   fied or released using any of these descriptors.  Furthermore, the lock
   is  released  either  by  an explicit LOCK_UN operation on any of these
   duplicate descriptors, or when all such descriptors have been closed.
   [...]
   Locks created by flock() are preserved across an execve(2)

But maybe I misunderstood something when implementig this?  I guess I really
need the testcase.


Corinna

-- 
Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Project Co-Leader          cygwin AT cygwin DOT com
Red Hat

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple

- Raw text -


  webmaster     delorie software   privacy  
  Copyright 2019   by DJ Delorie     Updated Jul 2019