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. # > #================================================== [EMAIL PROTECTED] # > -- Bruce Momjian | http://candle.pha.pa.us [EMAIL PROTECTED] | (610) 359-1001 + If your life is a hard drive, | 13 Roberts Road + Christ can be your backup. | Newtown Square, Pennsylvania 19073 ---------------------------(end of broadcast)--------------------------- TIP 1: subscribe and unsubscribe commands go to [EMAIL PROTECTED]