This is the mail archive of the
glibc-bugs@sourceware.org
mailing list for the glibc project.
[Bug libc/10652] New: getaddrinfo causes segfault if multithreaded and linked statically
- From: "heuler at infosim dot net" <sourceware-bugzilla at sourceware dot org>
- To: glibc-bugs at sources dot redhat dot com
- Date: 17 Sep 2009 11:34:40 -0000
- Subject: [Bug libc/10652] New: getaddrinfo causes segfault if multithreaded and linked statically
- Reply-to: sourceware-bugzilla at sourceware dot org
The getaddrinfo call causes an internal segmentation fault when called from
threads and the binary is linked with "-static". The documentation says the
function is thread safe. This should be also the case when linked with "-static"
since there is no exception mentioned.
The crash only occurs if the binary is executed on a multi core system, on a
single core system it does not crash. This seems to be a synchronization problem
inside the library, but somehow only in the static version.
To reproduce just use this small test program:
#include <stdio.h>
#include <netdb.h>
#include <pthread.h>
#include <unistd.h>
void *test(void *)
{
struct addrinfo *res = NULL;
fprintf(stderr, "x=");
int ret = getaddrinfo("localhost", NULL, NULL, &res);
fprintf(stderr, "%d ", ret);
return NULL;
}
int main()
{
for (int i = 0; i < 512; i++)
{
pthread_t thr;
pthread_create(&thr, NULL, test, NULL);
}
sleep(5);
return 0;
}
Compile with "g++ -o dnstest -static dnstest.cpp -lpthread" and then start.
Usually when linked with "-static" it crashes immediately, without it works fine.
This was verified with different glibc versions from Fedore 7, 11, CentOS 5.3,
Ubuntu 8.x and 9.x, SuSE 11.1 32bit and 64bit.
The glibc versions tested are from 2.6 to 2.10.
I see no reason why this only works if dynamically linked. The documentation
also does not mention any restrictions if linked statically.
--
Summary: getaddrinfo causes segfault if multithreaded and linked
statically
Product: glibc
Version: unspecified
Status: NEW
Severity: normal
Priority: P2
Component: libc
AssignedTo: drepper at redhat dot com
ReportedBy: heuler at infosim dot net
CC: glibc-bugs at sources dot redhat dot com
http://sourceware.org/bugzilla/show_bug.cgi?id=10652
------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.