Handle leak in TCPServer on Windows
- Run the following program on Windows (XP, haven't tried others) using Ruby 1.9.1p0:
server = TCPServer.open(2000)
socket = server.accept
cmd = socket.readline.chomp
Open the task manager, add "Handles" to the columns being viewed, and observe how many handles are being used.
Open an irb window and execute the following lines:
s = TCPSocket.new('localhost', 2000)
In the task manager, note that the number of handles used by the first process has increased. Every time you connect, three handles are added; when you write and the socket is closed, only two are released.
Try the same instructions using Ruby 1.8.2. All the handles are released, and there is no leak.