After reading the thread on kernel I switched from libc_r to libthread_xu. Now I have sporadic problems with a program that creates a thread to call getaddrinfo(3). From time to time I get EAI_NODATA even though the address is resolvable. It seems to be some timing issue as additional printfs make the problem go away. Below is a ktrace output that shows a problematic getaddrinfo() call. I wonder if 40645:27 dillo-fltk RET kevent -1 errno 9 Bad file descriptor is ok?
Cheers, Johannes 40645 dillo-fltk CALL lwp_create(0xbfbfd1b0) 40645:0 dillo-fltk RET lwp_create 0 40645:0 dillo-fltk CALL sigprocmask(SIG_SETMASK,0xbfbfd190,0) 40645:0 dillo-fltk RET sigprocmask 0 40645:0 dillo-fltk CALL mmap(0,0x3000,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON,0xffffffff,0,0,0) 40645:0 dillo-fltk RET mmap 677752832/0x2865b000 40645:0 dillo-fltk CALL close(0x4) 40645:27 dillo-fltk RET fork 0 40645:0 dillo-fltk RET close 0 40645:27 dillo-fltk CALL set_tls_area(0,0xbf6fbfdc,0x8) 40645:27 dillo-fltk RET set_tls_area 123/0x7b 40645:27 dillo-fltk CALL sigprocmask(SIG_SETMASK,0x28685d74,0) 40645:27 dillo-fltk RET sigprocmask 0 40645:27 dillo-fltk CALL open(0x2843b727,O_RDONLY,<unused>0x1b6) 40645:27 dillo-fltk NAMI "/etc/hosts" 40645:27 dillo-fltk RET open 4 40645:27 dillo-fltk CALL fstat(0x4,0xbf6f9cbc) 40645:27 dillo-fltk RET fstat 0 40645:27 dillo-fltk CALL read(0x4,0x28771000,0x2000) 40645:27 dillo-fltk GIO fd 4 read 1792 bytes "# $FreeBSD: src/etc/hosts,v 1.11.2.4 2003/02/06 20:36:58 dbaker " 40645:27 dillo-fltk RET read 1792/0x700 40645:27 dillo-fltk CALL read(0x4,0x28771000,0x2000) 40645:27 dillo-fltk GIO fd 4 read 0 bytes "" 40645:27 dillo-fltk RET read 0 40645:27 dillo-fltk CALL close(0x4) 40645:27 dillo-fltk RET close 0 40645:27 dillo-fltk CALL mmap(0,0x10000,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON,0xffffffff,0,0,0) 40645:27 dillo-fltk RET mmap 686235648/0x28e72000 40645:27 dillo-fltk CALL mmap(0,0x10000,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON,0xffffffff,0,0,0) 40645:27 dillo-fltk RET mmap 686563328/0x28ec2000 40645:27 dillo-fltk CALL mmap(0,0x10000,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON,0xffffffff,0,0,0) 40645:27 dillo-fltk RET mmap 689078272/0x29128000 40645:27 dillo-fltk CALL kqueue 40645:27 dillo-fltk RET kqueue 4 40645:27 dillo-fltk CALL socket(PF_INET,SOCK_DGRAM,0) 40645:27 dillo-fltk RET socket 5 40645:0 dillo-fltk CALL munmap(0x28888000,0x3000) 40645:0 dillo-fltk RET munmap 0 40645:0 dillo-fltk CALL munmap(0x288c7000,0x3000) 40645:0 dillo-fltk RET munmap 0 40645:0 dillo-fltk CALL close(0x4) 40645:0 dillo-fltk RET close 0 40645:0 dillo-fltk CALL munmap(0x288ca000,0x3000) 40645:0 dillo-fltk RET munmap 0 40645:0 dillo-fltk CALL gettimeofday(0xbfbff4c0,0) 40645:0 dillo-fltk RET gettimeofday 0 40645:0 dillo-fltk CALL write(0x3,0x28542000,0xda8) 40645:0 dillo-fltk GIO fd 3 wrote 3496 bytes ";[EMAIL PROTECTED]@\^A\0\0\0\0\^B\0\^B\0\^\\0\^X\0\ [EMAIL PROTECTED]@\^A" 40645:0 dillo-fltk RET write 3496/0xda8 40645:27 dillo-fltk CALL connect(0x5,0x28456a30,0x10) 40645:27 dillo-fltk RET connect 0 40645:0 dillo-fltk CALL gettimeofday(0xbfbff4c0,0) 40645:0 dillo-fltk RET gettimeofday 0 40645:0 dillo-fltk CALL select(0x4,0xbfbff504,0xbfbff584,0xbfbff604,0xbfbff684) 40645:27 dillo-fltk CALL sendto(0x5,0x29128000,0x2c,0,0,0) 40645:27 dillo-fltk GIO fd 5 wrote 44 bytes "8f\^A\0\0\^A\0\0\0\0\0\0\bpartners\rwebmasterplan\^Ccom\0\0\^A\0\^A" 40645:27 dillo-fltk RET sendto 44/0x2c 40645:27 dillo-fltk CALL gettimeofday(0xbf6fb64c,0) 40645:27 dillo-fltk RET gettimeofday 0 40645:27 dillo-fltk CALL kevent(0x4,0xbf6fb68c,0x1,0xbf6fb68c,0x1,0xbf6fb654) 40645:27 dillo-fltk RET kevent -1 errno 9 Bad file descriptor 40645:27 dillo-fltk CALL close(0x5) 40645:27 dillo-fltk RET close 0 40645:27 dillo-fltk CALL socket(PF_INET,SOCK_DGRAM,0) 40645:27 dillo-fltk RET socket 4 40645:27 dillo-fltk CALL connect(0x4,0x28456a30,0x10) 40645:27 dillo-fltk RET connect 0 40645:27 dillo-fltk CALL sendto(0x4,0x29128000,0x2c,0,0,0) 40645:27 dillo-fltk GIO fd 4 wrote 44 bytes "8f\^A\0\0\^A\0\0\0\0\0\0\bpartners\rwebmasterplan\^Ccom\0\0\^A\0\^A" 40645:27 dillo-fltk RET sendto 44/0x2c 40645:27 dillo-fltk CALL gettimeofday(0xbf6fb64c,0) 40645:27 dillo-fltk RET gettimeofday 0 40645:27 dillo-fltk CALL kevent(0x4,0xbf6fb68c,0x1,0xbf6fb68c,0x1,0xbf6fb654) 40645:27 dillo-fltk RET kevent -1 errno 9 Bad file descriptor 40645:27 dillo-fltk CALL close(0x4) 40645:27 dillo-fltk RET close 0 40645:27 dillo-fltk CALL socket(PF_INET,SOCK_DGRAM,0) 40645:27 dillo-fltk RET socket 4 40645:27 dillo-fltk CALL connect(0x4,0x28456a30,0x10) 40645:27 dillo-fltk RET connect 0 40645:27 dillo-fltk CALL sendto(0x4,0x29128000,0x2c,0,0,0) 40645:27 dillo-fltk GIO fd 4 wrote 44 bytes "8f\^A\0\0\^A\0\0\0\0\0\0\bpartners\rwebmasterplan\^Ccom\0\0\^A\0\^A" 40645:27 dillo-fltk RET sendto 44/0x2c 40645:27 dillo-fltk CALL gettimeofday(0xbf6fb64c,0) 40645:27 dillo-fltk RET gettimeofday 0 40645:27 dillo-fltk CALL kevent(0x4,0xbf6fb68c,0x1,0xbf6fb68c,0x1,0xbf6fb654) 40645:27 dillo-fltk RET kevent -1 errno 9 Bad file descriptor 40645:27 dillo-fltk CALL close(0x4) 40645:27 dillo-fltk RET close 0 40645:27 dillo-fltk CALL socket(PF_INET,SOCK_DGRAM,0) 40645:27 dillo-fltk RET socket 4 40645:27 dillo-fltk CALL connect(0x4,0x28456a30,0x10) 40645:27 dillo-fltk RET connect 0 40645:27 dillo-fltk CALL sendto(0x4,0x29128000,0x2c,0,0,0) 40645:27 dillo-fltk GIO fd 4 wrote 44 bytes "8f\^A\0\0\^A\0\0\0\0\0\0\bpartners\rwebmasterplan\^Ccom\0\0\^A\0\^A" 40645:27 dillo-fltk RET sendto 44/0x2c 40645:27 dillo-fltk CALL gettimeofday(0xbf6fb64c,0) 40645:27 dillo-fltk RET gettimeofday 0 40645:27 dillo-fltk CALL kevent(0x4,0xbf6fb68c,0x1,0xbf6fb68c,0x1,0xbf6fb654) 40645:27 dillo-fltk RET kevent -1 errno 9 Bad file descriptor 40645:27 dillo-fltk CALL close(0x4) 40645:27 dillo-fltk RET close 0 40645:27 dillo-fltk CALL close(0x4) 40645:27 dillo-fltk RET close -1 errno 9 Bad file descriptor 40645:27 dillo-fltk CALL munmap(0x29128000,0x10000) 40645:27 dillo-fltk RET munmap 0 40645:27 dillo-fltk CALL mmap(0,0x10000,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON,0xffffffff,0,0,0) 40645:27 dillo-fltk RET mmap 689078272/0x29128000 40645:27 dillo-fltk CALL kqueue 40645:27 dillo-fltk RET kqueue 4 40645:27 dillo-fltk CALL socket(PF_INET,SOCK_DGRAM,0) 40645:27 dillo-fltk RET socket 5 40645:27 dillo-fltk CALL connect(0x5,0x28456a30,0x10) 40645:27 dillo-fltk RET connect 0 40645:27 dillo-fltk CALL sendto(0x5,0x29128000,0x30,0,0,0) 40645:27 dillo-fltk GIO fd 5 wrote 48 bytes "8g\^A\0\0\^A\0\0\0\0\0\0\bpartners\rwebmasterplan\^Ccom\^Clan\0\0\^A\0\^A" 40645:27 dillo-fltk RET sendto 48/0x30 40645:27 dillo-fltk CALL gettimeofday(0xbf6fb64c,0) 40645:27 dillo-fltk RET gettimeofday 0 40645:27 dillo-fltk CALL kevent(0x4,0xbf6fb68c,0x1,0xbf6fb68c,0x1,0xbf6fb654) 40645:27 dillo-fltk RET kevent 1 40645:27 dillo-fltk CALL recvfrom(0x5,0x28e72000,0x10000,0,0xbf6fb6ac,0xbf6fb648) 40645:27 dillo-fltk GIO fd 5 read 48 bytes "8g\M^A\M^C\0\^A\0\0\0\0\0\0\bpartners\rwebmasterplan\^Ccom\^Clan\0\0\^A\0\^A" 40645:27 dillo-fltk RET recvfrom 48/0x30 40645:27 dillo-fltk CALL close(0x5) 40645:27 dillo-fltk RET close 0 40645:27 dillo-fltk CALL close(0x4) 40645:27 dillo-fltk RET close 0 40645:27 dillo-fltk CALL munmap(0x29128000,0x10000) 40645:27 dillo-fltk RET munmap 0 40645:27 dillo-fltk CALL munmap(0x28e72000,0x10000) 40645:27 dillo-fltk RET munmap 0 40645:27 dillo-fltk CALL munmap(0x28ec2000,0x10000) 40645:27 dillo-fltk RET munmap 0 40645:27 dillo-fltk CALL write(0x1,0x28537000,0x16) 40645:27 dillo-fltk GIO fd 1 wrote 22 bytes "DNS error: NO_ADDRESS " 40645:27 dillo-fltk RET write 22/0x16 40645:27 dillo-fltk CALL write(0x1,0x28537000,0x32) 40645:27 dillo-fltk GIO fd 1 wrote 50 bytes "Dns_server [0]: partners.webmasterplan.com is 0x0 "