Re: thread safety tests

Поиск
Список
Период
Сортировка
От Bruce Momjian
Тема Re: thread safety tests
Дата
Msg-id 200406091651.i59GpX426323@candle.pha.pa.us
обсуждение исходный текст
Ответ на Re: thread safety tests  (Jan Wieck <JanWieck@Yahoo.com>)
Список pgsql-hackers
Well, looks like you are missing getpwuid_r():
Your system uses getpwuid() which is not thread-safe. **

and we don't have any workaround for this.

---------------------------------------------------------------------------

Jan Wieck wrote:
> On 6/9/2004 11:16 AM, Bruce Momjian wrote:
> 
> > Jan Wieck wrote:
> >> On 6/9/2004 9:36 AM, Bruce Momjian wrote:
> >> 
> >> > Jan Wieck wrote:
> >> >> I am wondering why thread_test.c is checking for mktemp()? That function 
> >> >> is nowhere used in the libpq.
> >> > 
> >> > Uh, it isn't checking for mktemp, it is using it, and it is using it
> >> > because someone didn't like hard-coded paths I was using in the past. 
> >> > Is there something wrong with using mktemp?  I have heard of no
> >> > portability problems, except some need six X's, and we updated that.
> >> 
> >> There seems to be a portability issue here. Stefan Kaltenbrunner 
> >> reported a configure failure on sparc64-unknown-openbsd3.5 and the 
> >> config.log says:
> >> 
> >> /tmp//ccx22029.o: In function `main':
> >> /tmp//ccx22029.o(.text+0x8c): warning: mktemp() possibly used unsafely; 
> >> consider
> >>   using mkstemp()
> > 
> > Yes, I was wondering how mktemp was going to guard against concurrent
> > access.  I have applied the following patch to use mkstemp().
> > 
> >> Which is only a warning at this time, it fails later on getpwuid().
> > 
> > Oh, I will need to hear more about that failure.
> 
> The relevant part of the config.log is:
> 
> configure:17942: checking thread safety of required library functions
> configure:17967: gcc -o conftest -O2 -fno-strict-aliasing -pthread 
> -D_REENTRANT -D_THREAD_SAFE -D_POSIX_PTHREAD_SEMANTICS -DIN_CONFIGURE 
>    conftest.c -lz -lreadline -lcurses -lresolv -lcompat -lm
> -lutil   >&5
> /tmp//ccx22029.o: In function `main':
> /tmp//ccx22029.o(.text+0x8c): warning: mktemp() possibly used unsafely; 
> consider using mkstemp()
> configure:17970: $? = 0
> configure:17972: ./conftest
> Your errno is thread-safe.
> Your system has sterror_r();  it does not need strerror().
> Your system uses getpwuid() which is not thread-safe. **
> Your system has getaddrinfo();  it does not need gethostbyname()
>    or gethostbyname_r().
> 
> ** YOUR PLATFORM IS NOT THREAD-SAFE. **
> configure:17975: $? = 1
> configure: program exited with status 1
> configure: failed program was:
> #line 17961 "configure"
> #include "confdefs.h"
> #include "./src/tools/thread/thread_test.c"
> configure:17984: result: no
> configure:17986: error:
> *** Thread test program failed.  Your platform is not thread-safe.
> *** Check the file 'config.log'for the exact reason.
> 
> 
> 
> > 
> > 
> > 
> > ------------------------------------------------------------------------
> > 
> > Index: src/tools/thread/thread_test.c
> > ===================================================================
> > RCS file: /cvsroot/pgsql-server/src/tools/thread/thread_test.c,v
> > retrieving revision 1.30
> > diff -c -c -r1.30 thread_test.c
> > *** src/tools/thread/thread_test.c    28 May 2004 18:37:10 -0000    1.30
> > --- src/tools/thread/thread_test.c    9 Jun 2004 15:03:29 -0000
> > ***************
> > *** 104,110 ****
> >   {
> >       pthread_t    thread1,
> >                   thread2;
> > ! 
> >       if (argc > 1)
> >       {
> >           fprintf(stderr, "Usage: %s\n", argv[0]);
> > --- 104,111 ----
> >   {
> >       pthread_t    thread1,
> >                   thread2;
> > !     int            fd;
> > !     
> >       if (argc > 1)
> >       {
> >           fprintf(stderr, "Usage: %s\n", argv[0]);
> > ***************
> > *** 120,130 ****
> >       /* Make temp filenames, might not have strdup() */
> >       temp_filename_1 = malloc(strlen(TEMP_FILENAME_1) + 1);
> >       strcpy(temp_filename_1, TEMP_FILENAME_1);
> > !     mktemp(temp_filename_1);
> >   
> >       temp_filename_2 = malloc(strlen(TEMP_FILENAME_2) + 1);
> >       strcpy(temp_filename_2, TEMP_FILENAME_2);
> > !     mktemp(temp_filename_2);
> >       
> >   #if !defined(HAVE_GETADDRINFO) && !defined(HAVE_GETHOSTBYNAME_R)
> >       if (gethostname(myhostname, MAXHOSTNAMELEN) != 0)
> > --- 121,133 ----
> >       /* Make temp filenames, might not have strdup() */
> >       temp_filename_1 = malloc(strlen(TEMP_FILENAME_1) + 1);
> >       strcpy(temp_filename_1, TEMP_FILENAME_1);
> > !     fd = mkstemp(temp_filename_1);
> > !     close(fd);
> >   
> >       temp_filename_2 = malloc(strlen(TEMP_FILENAME_2) + 1);
> >       strcpy(temp_filename_2, TEMP_FILENAME_2);
> > !     fd = mkstemp(temp_filename_2);
> > !     close(fd);
> >       
> >   #if !defined(HAVE_GETADDRINFO) && !defined(HAVE_GETHOSTBYNAME_R)
> >       if (gethostname(myhostname, MAXHOSTNAMELEN) != 0)
> 
> 
> -- 
> #======================================================================#
> # It's easier to get forgiveness for being wrong than for being right. #
> # Let's break this rule - forgive me.                                  #
> #================================================== JanWieck@Yahoo.com #
> 

--  Bruce Momjian                        |  http://candle.pha.pa.us pgman@candle.pha.pa.us               |  (610)
359-1001+  If your life is a hard drive,     |  13 Roberts Road +  Christ can be your backup.        |  Newtown Square,
Pennsylvania19073
 


В списке pgsql-hackers по дате отправления:

Предыдущее
От: Bruce Momjian
Дата:
Сообщение: Re: thread safety tests
Следующее
От: Jan Wieck
Дата:
Сообщение: Re: sequences and "addval('myseq', value)"