This is the mail archive of the pthreads-win32@sources.redhat.com mailing list for the pthreas-win32 project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: pthread Win32 - runtime lib VC++ setting


Do you remember that I've asked about which flag should I use:
/MT - link statically the CRT (meaning that each module: dll, exe has it's
own copy of CRT)
or
/MD - link dinamically the CRT (meaning that the dlls, exe are using the
same CRT copy)

The idea is that all the tries that I've done with semaphore1.c (told about
them in the before email) test were done having
the pthreadVC.dll built using the /MT flag (this is what you have in the cvs
sources
by default set for release version for the .dsp project).

I've tried to build now the pthreadVC.dll using the other flag: /MD, as this
is the one recommended
by M$ when having dlls (if you are interested why, I can give you a very
short explanation), and now
the output of the test is:

semaphore1.c
... Running VC test: semaphore1.exe
thread: sem_trywait 1: Resource temporarily unavailable
thread: ok 2
main: sem_trywait 1: Resource temporarily unavailable
main: ok 2
...... Passed

I have no idea what's with "Resource temporarily unavailable" but the test
passed !!!
So, it seems that the problem is related with having just one copy of the
CRT in exe and also
in dll.

btw, in the pthread.dsp from your cvs you have the /MT flag set for release,
but in Makefile you are using the /MD flag, so I assume that the problem is
just in the .dsp file.

Viv

----- Original Message -----
From: "vc" <vcotirlea@hotmail.com>
To: "Ross Johnson" <rpj@ise.canberra.edu.au>
Sent: Tuesday, May 13, 2003 5:50 PM
Subject: Re: pthread Win32 - runtime lib VC++ setting


> Hi,
>
> Thanks for your answer.
>
> In the semaphore1.c I've done the following:
> 1) check to see if NEED_SEM is defined
> 2) print the errno
> So, now the code in semaphore1.c looks like:
>   sem_t s;
>   int result;
>
> #ifdef NEED_SEM
>   printf("NEED_SEM is defined\n");
> #else
>   printf("NEED_SEM is not defined\n");
> #endif
>
>   assert(sem_init(&s, PTHREAD_PROCESS_PRIVATE, 0) == 0);
>
>   assert((result = sem_trywait(&s)) == -1);
>
>   if ( result == -1 )
>   {
>     perror("thread: sem_trywait 1"); // No error
>     printf("errno = %d\n", errno);
>     assert(errno == EAGAIN);
>   }
>
> The output for this code is:
> semaphore1.c
> ... Running VC test: semaphore1.exe
> NEED_SEM is not defined
> thread: sem_trywait 1: No error
> errno = 0
> Assertion failed: (errno == EAGAIN), file semaphore1.c, line 98
> NMAKE : fatal error U1077: '.\semaphore1.exe' : return code '0x1'
> Stop.
> NMAKE : fatal error U1077: '"D:\Program Files\Microsoft Visual Studio .NET
> 2003\Vc7\bin\nmake.exe"' : return code '0x2'
> Stop.
>
>
> So it seems that not the NEED_SEM is the problem, as it seems to be
> undefined.
>
> I also have tried this test with the binaries that I download on 4 Nov
2002
> from the following link:
> http://gd.tuwien.ac.at/gnu/sourceware/pthreads-win32/dll-latest/
> and the output is the same:
> ... Running VC test: semaphore1.exe
> thread: sem_trywait 1: No error
> Assertion failed: (errno == EAGAIN), file semaphore1.c, line 91
> NMAKE : fatal error U1077: '.\semaphore1.exe' : return code '0x1'
> Stop.
> NMAKE : fatal error U1077: '"D:\Program Files\Microsoft Visual Studio .NET
> 2003\Vc7\bin\nmake.exe"' : return code '0x2'
> Stop.
>
>
> If this helps: I'm using VC7.1 beta on Win2k.
>
> Thanks a lot in advance,
> Viv
>
>
> ----- Original Message -----
> From: "Ross Johnson" <rpj@ise.canberra.edu.au>
> To: "vc" <vcotirlea@hotmail.com>
> Sent: Saturday, May 10, 2003 7:36 AM
> Subject: Re: pthread Win32 - runtime lib VC++ setting
>
>
> > There's only one value possible for errno that sem_trywait should return
> > at this point. That's EAGAIN, unless you somehow have defined NEED_SEM
> > when you compile the test. Unless your target system doesn't have Win32
> > semaphores (early WinCE etc), then NEED_SEM should not be defined.
> >
> > Is this a possibility?
> >
> > pthread.h includes config.h, which normally undefines NEED_SEM.
> >
> > Ross
> >
> > vc wrote:
> >
> > >Hi again,
> > >
> > >I've downloaded the pthread sources from the cvs, build them using the
> VC++
> > >IDE
> > >and run the tests using "nmake clean VC".
> > >
> > >All the tests passed besides the semaphore1.exe.
> > >The output is:
> > >... Running VC test: semaphore1.exe
> > >thread: sem_trywait 1: No error
> > >Assertion failed: (errno == EAGAIN), file semaphore1.c, line 91
> > >NMAKE : fatal error U1077: '.\semaphore1.exe' : return code '0x1'
> > >Stop.
> > >NMAKE : fatal error U1077: '"D:\Program Files\Microsoft Visual Studio
> .NET
> > >2003\Vc7\bin\nmake.exe"' : return code '0x2'
> > >Stop.
> > >
> > >I couldn't find anything about the failure of this test in the docs, so
I
> > >assume that it should pass.
> > >
> > >As I'm not that used with the posix threads I don't really know what's
> the
> > >problem ...
> > >Maybe somebody has an idea ?
> > >
> > >Thanks a lot,
> > >Viv
> > >
> > >----- Original Message -----
> > >From: "Ross Johnson" <rpj@ise.canberra.edu.au>
> > >To: "vc" <vcotirlea@hotmail.com>
> > >Cc: <pthreads-win32@sources.redhat.com>
> > >Sent: Friday, May 09, 2003 2:52 AM
> > >Subject: Re: pthread Win32 - runtime lib VC++ setting
> > >
> > >
> > >
> > >
> > >>Hi,
> > >>
> > >>vc wrote:
> > >>
> > >>
> > >>
> > >>>Hi all,
> > >>>
> > >>>I'm working on Win2k with VC++ 7.1 (VS .NET beta).
> > >>>I have to port a Unix app on Windows, so I'm using the pthread lib
for
> > >>>Win32 (http://sources.redhat.com/pthreads-win32/).
> > >>>
> > >>>I've downloaded the sources, as I want to build them myself, and
> > >>>looking at the VC++ settings, I discovered that in Debug
> > >>>configuration, the /MDd flag is used (which means: "multithread- and
> > >>>DLL-specific versions of the run-time") and in Release configuration
> > >>>the /MT flag is used (even if the release version of the /MDd flag is
> > >>>/MD).
> > >>>
> > >>>Questions:
> > >>>1) Why is not used in the project settings the same flag for both
> > >>>configuration(i.e /MDd - debug; /MD - release or /MTd - debug; /MT -
> > >>>release)? Is there a reason, or it was just by mistake?
> > >>>Note: MS recommended for DLLs to use /MD (/MDd)
> > >>>
> > >>>
> > >>>
> > >>Re the /MT flag, I can't say now because I don't really know.
> > >>
> > >>
> > >>
> > >>>2) If for this is actually no reason, is it ok if I build the sources
> > >>>using the /MD flag for release?
> > >>>
> > >>>3) I donwloaded the sources from
> > >>>ftp://sources.redhat.com/pub/pthreads-win32/sources/ and there is a
> > >>>pthreads-snap-2002-11-04 directory. Is this a release version? Is it
> > >>>ok if I'm using this version, or this is just a version between 2
> > >>>releases?
> > >>>
> > >>>
> > >>>
> > >>>
> > >>Since you wan't to build the library yourself, you should get the
source
> > >>via anonymous CVS (see the web page for details -
> > >>http://sources.redhat.com/pthreads-win32/). It has the latest bug
fixes,
> > >>and currently bug fixes are the only changes from the latest versions
> > >>available from ftp. I will update the ftp versions ASAP.
> > >>
> > >>
> > >>
> > >>>4) When I downloaded just binaries some time ago, there were 3
> > >>>versions of the binaries: VC, VSE, VCE. The sources that I downloaded
> > >>>now seems to be for the VC version. Am I correct? (because this is
the
> > >>>version that interests me)
> > >>>
> > >>>
> > >>>
> > >>>
> > >>See the FAQ file, answer to Q2. For VC you don't need to do anything
> > >>because it is the default. The others can be used if you add the
> > >>appropriate compile flags when you build your application code, and
when
> > >>you build the library if you don't use the prebuilt dlls.
> > >>
> > >>
> > >>
> > >>>Thanks a lot in advance,
> > >>>Viv
> > >>>
> > >>>
> > >>>
> > >>Regards.
> > >>Ross
> > >>
> > >>
> > >>
> > >>>
> > >>>
> > >>
> > >>
> >
> >
>


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]