Date: Fri, 3 Dec 1999 15:59:09 +0800 From: Chih-hung Feng <chfeng@eagle.seed.net.tw> To: freebsd-questions@freebsd.org Subject: Is gethostbyname() multithread-safe? Message-ID: <19991203155909.A11513@eagle.seed.net.tw>
next in thread | raw e-mail | index | archive | help
Hi:
I am writing a multithreaded proxy-like program on FreeBSD 3.x
platform using POSIX thread library, and comming across a problem.
When the program had been running for a while, it sometimes stopped
responding anything. After further investigation, it turned out
that all threads stopped at the same line of code:
pserver = (struct hostenv *)gethostbyname(servername);
Thus I am suspecting it was caused by something like resource
locking or race condition inside gethostbyname() call. Tried to
work around this I modified the code as:
pthread_mutex_lock(&mutex);
pserver = (struct hostent *)gethostbyname(servername);
pthread_mutex_unlock(&mutex);
I'm not sure this is the right way to do it. If gethostbyname()
is MT-safe then it does no better except adding extra performance
punishment. I'm not even sure the bug has been fixed (I made the
modification today and the time is too short to prove the problem
never comes back again).
I will appreciate any kind of feedback. Please cc your reponse
to my mailbox cause I'm not on this mailing list.
Best Regards
Chih-hung Feng
Seednet, Taiwan
chfeng@seed.net.tw
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-questions" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?19991203155909.A11513>
