On Wed, 5 Mar 2003, Yukihiro Matsumoto wrote: > The only workaround I can think of is to use "resolv-replace", which > is pure Ruby resolver. It is not fast at all, but at least other > thread can work during resolving. Try putting > > require "resolv-replace" i see the same problem as seth. when i run this : ruby -r socket -e 'p (Time.now); p (TCPSocket.new %q(ad.doubleclick.net), 80); p (Time.now) it takes around 20 seconds to run. so i tried strace !! > strace 2>&1 and here is where it got interesting. looking at the strace file i saw : 247 socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 3 248 connect(3, {sin_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("137.75.132.181")}}, 16) = 0 249 send(3, "\314Q\1\0\0\1\0\0\0\0\0\0\2ad\vdoubleclick\3net\0"..., 36, 0) = 36 250 time(NULL) = 1046809069 251 poll([{fd=3, events=POLLIN}], 1, 5000) = 0 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ THIS TIMED OUT! 252 close(3) = 0 so then tried running strace dnsquery ad.doubleclick.net > strace 2>&1 and looking at it's strace, which shows : 36 socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 3 37 connect(3, {sin_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("137.75.132.181")}}, 16) = 0 38 send(3, "s\332\1\0\0\1\0\0\0\0\0\0\2ad\vdoubleclick\3net\0"..., 36, 0) = 36 39 gettimeofday({1046809802, 554050}, NULL) = 0 40 rt_sigprocmask(SIG_SETMASK, NULL, [], 8) = 0 41 select(4, [3], NULL, NULL, {5, 0}) = 1 (in [3], left {4, 950000}) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ THIS DID *NOT* TIMED OUT! 42 rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 43 recvfrom(3, "s\332\201\200\0\1\0\1\0\4\0\4\2ad\vdoubleclick\3net\0"..., 8192, 0, {sin_family=AF_ INET, sin_port=htons(53), sin_addr=inet_addr("137.75.132.181")}}, [16]) = 206 44 close(3) = 0 so, ruby sends (via syscalls) "\314Q\1\0\0\1\0\0\0\0\0\0\2ad\vdoubleclick\3net\0" and then polls while dnsquery sends (via syscalls) "s\332\1\0\0\1\0\0\0\0\0\0\2ad\vdoubleclick\3net\0" and then selects the problems is that the poll from ruby times out?! i don't know much about dns, and so don't understand the meaning of the queries, but perhaps one is incorrect? if not, then this seems like it could only be a bug in poll? hope this helps. -a -- ==================================== | Ara Howard | NOAA Forecast Systems Laboratory | Information and Technology Services | Data Systems Group | R/FST 325 Broadway | Boulder, CO 80305-3328 | Email: ahoward / fsl.noaa.gov | Phone: 303-497-7238 | Fax: 303-497-7259 ====================================