X-Recipient: archive-cygwin@delorie.com
DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id
	:list-unsubscribe:list-subscribe:list-archive:list-post
	:list-help:sender:date:from:to:subject:message-id:reply-to
	:references:mime-version:content-type:in-reply-to; q=dns; s=
	default; b=M9SJcULzsOZmyAGL1lMoULBT+biuIR3lgH4zzw/PnZ6nN0Iraxhc4
	1YeKNlq0auPjwo9d5cI85szw0uBrkU4F6kqxBtaudtjvhhn4I6F2QLk1WbetEUie
	TnnJwBEMAgmoeP2NGMZXW07z4SrQ7wOOzYWp/ukZ6V1JQO7rxSLsJE=
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id
	:list-unsubscribe:list-subscribe:list-archive:list-post
	:list-help:sender:date:from:to:subject:message-id:reply-to
	:references:mime-version:content-type:in-reply-to; s=default;
	 bh=JajbhA+vBBZlKKRO/sVJ9AA7/Vk=; b=NGiVm40hKKM5hWySFPr/H6PulOaB
	dNcWELV0SMNcq4xXuwbkdHyeUBr6xQOrAPNlk1w2FbpYondMfUvHRLdS2+5g5BXb
	tezFdHaMj1WPu99Db56LWKoHhXbaPTfehmDZazmPZjDeczJOcJvU142IM9TckCE1
	7/3wByz8U8m4pQE=
Mailing-List: contact cygwin-help@cygwin.com; run by ezmlm
List-Id: <cygwin.cygwin.com>
List-Subscribe: <mailto:cygwin-subscribe@cygwin.com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin@cygwin.com>
List-Help: <mailto:cygwin-help@cygwin.com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner@cygwin.com
Mail-Followup-To: cygwin@cygwin.com
Delivered-To: mailing list cygwin@cygwin.com
X-Spam-SWARE-Status: No, score=2.1 required=5.0 tests=AWL,BAYES_50,RDNS_NONE,URIBL_BLACK autolearn=no version=3.3.1
Date: Tue, 23 Jul 2013 16:39:10 +0200
From: Corinna Vinschen <corinna-cygwin@cygwin.com>
To: cygwin@cygwin.com
Subject: Re: Win32 error in C program using openmp and fork()
Message-ID: <20130723143910.GI9689@calimero.vinschen.de>
Reply-To: cygwin@cygwin.com
Mail-Followup-To: cygwin@cygwin.com
References: <57302C57257EF2428CCAAF9BA83EC0448222C0EA@mbx08.adf.bham.ac.uk> <20130722080657.GD2661@calimero.vinschen.de> <51EE7700.50803@star.sr.bham.ac.uk> <20130723130851.GG9689@calimero.vinschen.de> <20130723141855.GH9689@calimero.vinschen.de>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <20130723141855.GH9689@calimero.vinschen.de>
User-Agent: Mutt/1.5.21 (2010-09-15)

On Jul 23 16:18, Corinna Vinschen wrote:
> On Jul 23 15:08, Corinna Vinschen wrote:
> > On Jul 23 13:28, Daniel Brown wrote:
> > > and that still had the fork error. I have also tried running in safe
> > > mode and
> > > stopping all my anti-virus software just incase that was interfering
> > > somehow.
> > > So I get as an output now...
> > > 
> > > Daniel@XPS15z ~
> > > $ uname -r
> > > 1.7.22s(0.268/5/3)
> > > 
> > > Daniel@XPS15z ~
> > > $ ./a.exe
> > > I'm an openmp thread...
> > > I'm an openmp thread...
> > > I'm an openmp thread...
> > > I'm an openmp thread...
> > > Parent fork 1 [main] a 5832 C:\cygwin\home\Daniel\a.exe: *** fatal
> > > error in forked process - failed
> > > to create new win32 semaphore, currentvalue -2, Win32 error 87
> > > 
> > > However if I reduce the number of threads from 4 to 2 with:
> > > 
> > > #pragma omp parallel num_threads(2)
> > > {
> > > printf("I'm an openmp thread...\n");
> > > }
> > 
> > Ah, now there's something different.  If I set the number of threads to
> > 4, I can reproduce this problem almost every try with currentvalue -2,
> > occassionally with currentvalue -1.
> > 
> > > Looking at the source in thread.cc _fixup_after_fork() the win32
> > > error 87 is ERROR_INVALID_PARAMETER
> > > which is due to currentvalue < 0.
> > > 
> > > My only guess is that there is a race condition on the
> > > currentvalue-- operations perhaps?
> > 
> > Apparently.  I investigate...
> 
> Yes, there was a race condition in setting the value of the semaphore
> private "currentvalue" member.  The only reason to keep track of the
> value is to allow _fixup_after_fork to set the right value, but here the
> race comes into play.  I redesigned this part so that it only sets
> currentvalue once, right from fork itself, to propagate the correct
> value to the child process.
> 
> I'm just building new 32 and 64 bit snapshots.  They should be available
> on http://cygwin.com/snapshots/ in an hour at the latest.  Please give
> it a try.

Both snapshots are up.  Test away.


Corinna

-- 
Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Maintainer                 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

