The following code segfaults with at least glibc >= 2.7 (and CVS). It works correctly with versions 2.3.X. I have tested versions in between. #define _GNU_SOURCE #include <string.h> #include <netdb.h> #include <signal.h> #include <stdio.h> int main (void) { #define N 10 struct gaicb reqmem[N]; struct gaicb *req[N]; int n; for (n = 0; n < N; ++n) { asprintf (&reqmem[n].ar_name, "test%d.test.redhat.com", 140 + n); reqmem[n].ar_service = NULL; reqmem[n].ar_request = NULL; reqmem[n].ar_result = NULL; req[n] = &reqmem[n]; } getaddrinfo_a (GAI_NOWAIT, req, N, NULL); return 0; }
Fixed in cvs.