FreeBSD Thread-safe functions ...

Started by Marc G. Fournierover 22 years ago6 messages
#1Marc G. Fournier
scrappy@hub.org

After hearing that FreeBSD wasn't thread safe, I posted to the FreeBSD
lists to find out what is up ...

FreeBSD 5.x has a getpwuid_r function that should be used ... and, the
word I got from one of the developers was that getaddrinfo(3) should be
used instead of gethostbyname ...

Now, getpwuid_r is still not available in 4.x, so we still will fail over
there, and I've seen nothing to indicate that it will be MFCd down, but
getaddrinfo is available in both ...

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Marc G. Fournier (#1)
Re: FreeBSD Thread-safe functions ...

"Marc G. Fournier" <scrappy@hub.org> writes:

FreeBSD 5.x has a getpwuid_r function that should be used ... and, the
word I got from one of the developers was that getaddrinfo(3) should be
used instead of gethostbyname ...

Hm. A quick grep shows that our *only* use of gethostbyname is in
src/port/getaddrinfo.c. Seems like we should omit this "porting
requirement" on platforms that have getaddrinfo.

regards, tom lane

#3Bruce Momjian
pgman@candle.pha.pa.us
In reply to: Tom Lane (#2)
Re: FreeBSD Thread-safe functions ...

Tom Lane wrote:

"Marc G. Fournier" <scrappy@hub.org> writes:

FreeBSD 5.x has a getpwuid_r function that should be used ... and, the
word I got from one of the developers was that getaddrinfo(3) should be
used instead of gethostbyname ...

Hm. A quick grep shows that our *only* use of gethostbyname is in
src/port/getaddrinfo.c. Seems like we should omit this "porting
requirement" on platforms that have getaddrinfo.

See the post I just made --- fe-secure.c calls pqGethostbyname(), and
that should be converted to getaddrinfo --- once that is done, we can
omit the test on platforms with getaddrinfo() as you indicated.

Can someone handle this. I am heading to Mexico tomorrow. I an adjust
the test script when I return but I would like to see fe-secure.c
adjusted.

-- 
  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, Pennsylvania 19073
#4Tom Lane
tgl@sss.pgh.pa.us
In reply to: Bruce Momjian (#3)
Re: FreeBSD Thread-safe functions ...

Bruce Momjian <pgman@candle.pha.pa.us> writes:

Tom Lane wrote:

Hm. A quick grep shows that our *only* use of gethostbyname is in
src/port/getaddrinfo.c. Seems like we should omit this "porting
requirement" on platforms that have getaddrinfo.

See the post I just made --- fe-secure.c calls pqGethostbyname(), and
that should be converted to getaddrinfo

No, it should be diked out. The call you are referring to is in code
that is #ifdef NOT_USED. The whole routine is pretty broken anyway (not
IPv6-aware, for starters) and I think we should just rip it out rather
than try to bring it up to speed.

regards, tom lane

#5Bruce Momjian
pgman@candle.pha.pa.us
In reply to: Marc G. Fournier (#1)
Re: FreeBSD Thread-safe functions ...

Marc G. Fournier wrote:

After hearing that FreeBSD wasn't thread safe, I posted to the FreeBSD
lists to find out what is up ...

FreeBSD 5.x has a getpwuid_r function that should be used ... and, the
word I got from one of the developers was that getaddrinfo(3) should be
used instead of gethostbyname ...

Now, getpwuid_r is still not available in 4.x, so we still will fail over
there, and I've seen nothing to indicate that it will be MFCd down, but
getaddrinfo is available in both ...

OK, I have adjusted the thread test program so it has its own Makefile
and is now in src/tools/thread. I also added code so gethostbyname is
tested only if getaddrinfo isn't present.

Would people please retest their operating sysystems using this program?
I think we had a few OS's that failed the test originally because
gethostbyname wasn't thread-safe, and that is probably not tested
anymore on that OS.

-- 
  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, Pennsylvania 19073
#6Bruce Momjian
pgman@candle.pha.pa.us
In reply to: Bruce Momjian (#5)
Re: FreeBSD Thread-safe functions ...

Bruce Momjian wrote:

Marc G. Fournier wrote:

After hearing that FreeBSD wasn't thread safe, I posted to the FreeBSD
lists to find out what is up ...

FreeBSD 5.x has a getpwuid_r function that should be used ... and, the
word I got from one of the developers was that getaddrinfo(3) should be
used instead of gethostbyname ...

Now, getpwuid_r is still not available in 4.x, so we still will fail over
there, and I've seen nothing to indicate that it will be MFCd down, but
getaddrinfo is available in both ...

OK, I have adjusted the thread test program so it has its own Makefile
and is now in src/tools/thread. I also added code so gethostbyname is
tested only if getaddrinfo isn't present.

Would people please retest their operating sysystems using this program?
I think we had a few OS's that failed the test originally because
gethostbyname wasn't thread-safe, and that is probably not tested
anymore on that OS.

Oops, I have a few more adjustments to make. I now realize that to get
the thread flags from the port files to the Makefile, you have to run
configure and enable threads. I will let you know when it is ready.

-- 
  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, Pennsylvania 19073