delorie.com/archives/browse.cgi | search |
X-Recipient: | archive-cygwin AT delorie DOT 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=tdpYOcP+3SOU1AK3ryN0eo270IlqRTXUx44+PJeJC+6VrFCBJDtN1 | |
M46ccedXPD+3FMW67DqYHiahdMt/RIEcilDQ3NlbE43VMublpuABYGxev1MHOk0v | |
F6eAt0KjQHUpam/y7cG6e09zS56gC0ckNYoO1HlTQBbtKFzaK1hLC0= | |
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=8YeHUGZARpRUipbpvQfovrq36/Y=; b=GSZ/odHXQ/UbbMS2PTrM/c6ZgWU4 | |
TsgVatjlduXreQ1Sub+z/RVhQqQ/ayKbGG+XcAPjtTKcBuqmRjChAHRoqyyomha0 | |
jBBd6huGlH6LQqv12tnbuDZ6OQziKGxqzbAXdGl2s/qDGfWWD7O7sjQrfv1ymf+b | |
G1su68Fm6ae+HOc= | |
Mailing-List: | contact cygwin-help AT cygwin DOT com; run by ezmlm |
List-Id: | <cygwin.cygwin.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 |
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:18:55 +0200 |
From: | Corinna Vinschen <corinna-cygwin AT cygwin DOT com> |
To: | cygwin AT cygwin DOT com |
Subject: | Re: Win32 error in C program using openmp and fork() |
Message-ID: | <20130723141855.GH9689@calimero.vinschen.de> |
Reply-To: | cygwin AT cygwin DOT com |
Mail-Followup-To: | cygwin AT cygwin DOT com |
References: | <57302C57257EF2428CCAAF9BA83EC0448222C0EA AT mbx08 DOT adf DOT bham DOT ac DOT uk> <20130722080657 DOT GD2661 AT calimero DOT vinschen DOT de> <51EE7700 DOT 50803 AT star DOT sr DOT bham DOT ac DOT uk> <20130723130851 DOT GG9689 AT calimero DOT vinschen DOT de> |
MIME-Version: | 1.0 |
In-Reply-To: | <20130723130851.GG9689@calimero.vinschen.de> |
User-Agent: | Mutt/1.5.21 (2010-09-15) |
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 AT XPS15z ~ > > $ uname -r > > 1.7.22s(0.268/5/3) > > > > Daniel AT 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. Thanks, 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
webmaster | delorie software privacy |
Copyright © 2019 by DJ Delorie | Updated Jul 2019 |