From: Jean-Francois Nadeau Date: 2005-02-06T01:03:54+09:00 Subject: Re: windows socket connection freeze Hi, My patch resolves this issue. That patch was never integrated in the CVS tree and I don't know why. I'm using that patch in my software (Lektora, http://www.lektora.com, great RSS aggregator that integrates in Firefox/IE) and it works great. I would be glad if that patch would be integrated because I have to manually apply it for each Ruby release. ;-( Also, while I was porting Lektora to MacOSX, I realized that dns lookups were blocking all threads too. That slows down a lot my software. I made a patch that resolves this issue too. It uses pthreads to make dns lookups and it works great. With that patch applied, the ruby process can go 100% CPU without any blocking. I'll prepare and send this new patch soon. I need to do the equivalent on Win32 using native Win32 threads. Regards, Jean-Francois Nadeau PS: I want to write a nice Ruby success story, i.e. the benefits of Ruby in the Lektora project. > -----Original Message----- > From: William Morgan [mailto:wmorgan@masanjin.net] On Behalf Of William > Morgan > Sent: Saturday, February 05, 2005 9:05 AM > To: ruby-core@ruby-lang.org > Subject: windows socket connection freeze > > Dear experts, > > Was the issue described in [ruby-core:3154] ever resolved? I'm > experiencing the same behavior with Ruby 1.8.2 2004-12-25 > [i386-mswin32]: when I open a TCP socket to a bogus IP address, *all* > threads freeze until the TCP timeout is reached. This doesn't happen on > Linux. > > Sample code: > > require 'socket' > > t = Thread.new do > while true > puts "in thread" > sleep 1 > end > end > > sleep 2 > > puts "connecting..." > h = TCPSocket.new('192.168.0.80', 80) # bogus ip > puts "connected!" > > t.join > > Thanks, > > -- > William