This is the mail archive of the
pthreads-win32@sources.redhat.com
mailing list for the pthreas-win32 project.
Some tests fail in VC++2005
- From: "Uenal Mutlu" <uenal dot mutlu at t-online dot de>
- To: <pthreads-win32 at sources dot redhat dot com>
- Date: Thu, 21 Apr 2005 16:07:35 +0200
- Subject: Some tests fail in VC++2005
- Organization: HUP
I've tried the latest 2 pthreads releases with MS compilers.
VC++6 passes all tests, but VC++2005 fails with about 26 of the
test programs (tested only in beta 1, beta 2 is out since last monday
or so but I don't have it yet).
The first one of the failing test programs is semaphore1.c, line 89:
nmake clean VC
...
... Running VC test: mutex1r.exe
...... Passed
cl /D__CLEANUP_C /O2 /Ob0 /W3 /WX /MD /nologo /Yd /Zi -I. semaphore1.c /Fesemaphore1.exe /link /INCREMENTAL:NO pthreadVC2.lib
ws2_32.lib
cl : Command line warning D9035 : option 'Yd' has been deprecated and will be removed in a future release
semaphore1.c
... Running VC test: semaphore1.exe
thread: sem_trywait 1: expected error: No error
Assertion failed: (errno == EAGAIN), file semaphore1.c, line 89
NMAKE : fatal error U1077: '.\semaphore1.exe' : return code '0x1'
Stop.
NMAKE : fatal error U1077: 'nmake' : return code '0x2'
Stop.
Below is the function from semaphore1.c where the error occurs.
It is the line
assert(errno == EAGAIN);
I wonder where errno gets set to this value.
Is it done in sem_trywait() or maybe in perror()?
And frankly I don't understand how the below code works at all
because that branch is entered only if result is -1. The funny
thing here (for me) is that then the program should stop in the
previous assert(), but this isn't happening! Then I wonder how
and why the if condition becomes true...
void *
thr(void * arg)
{
sem_t s;
int result;
assert(sem_init(&s, PTHREAD_PROCESS_PRIVATE, 0) == 0);
assert((result = sem_trywait(&s)) == -1);
if ( result == -1 )
{
perror("thread: sem_trywait 1: expected error"); // No error
assert(errno == EAGAIN);
}
...
I have posted this issue also in
news://news.microsoft.com/microsoft.public.dotnet.languages.vc
under the subject "VC++ 2005 beta1 fails with pthreads benchmark tests"
but the MS guys say the code is broken. Maybe someone could clarify this.