Actions
Bug #17394
closedTCPServer is not thread safe on win32
Description
Hello, it looks like win32 version of TCPServer is not thread safe. I've extracted the following code from project:
require "socket"
require "parallel"
::Parallel.each(1..2, :in_threads => 2) do
::TCPServer.open 0 do |server|
thread = ::Thread.new { server.accept.close }
::TCPSocket.open "localhost", server.addr[1]
thread.join
end
end
It returns:
in `accept': Bad file descriptor - not a socket file descriptor (Errno::EBADF)
You can fix this code by using :in_threads => 1
. This is unique windows issue: GNU/Linux, FreeBSD and OSX works perfect. I think something is wrong in win32
folder of ruby source code.
Can you please assign this issue to the developer familiar with win32
folder? Thank you.
Files
Actions
Like0
Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0