I've wiped my old version of Cygwin and installed it fresh on my computer and 
1.7.21 doesn't work for me, either 32 or 64 bit. I have tried a Win 7 x86 
virtual machine and it worked, on a Win 8 x86 virtual machine though I see the 
same error. Therefore I guess it is a Windows 8 issue unless you are running it?

I tried replacing the cygwin1.dll with the latest snapshots 1.7.22s x86 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");
}

it works fine, if I use 3 threads then the error comes back. Interestingly the 
the value of currentvalue changes each time I run the program if I use 4 or 
more threads, if I use 3 then it is always -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?

Thanks,
Daniel

--
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

Reply via email to