From: aladjev.andrew@... Date: 2020-12-14T23:02:45+00:00 Subject: [ruby-core:101459] [Ruby master Bug#17394] TCPServer is not thread safe on win32 Issue #17394 has been updated by puchuu (Andrew Aladjev). PS This issue is not 100% reproducible, please try to run script several times, thank you. ---------------------------------------- Bug #17394: TCPServer is not thread safe on win32 https://bugs.ruby-lang.org/issues/17394#change-89228 * Author: puchuu (Andrew Aladjev) * Status: Open * Priority: Normal * ruby -v: 2.7.1 * Backport: 2.5: UNKNOWN, 2.6: UNKNOWN, 2.7: UNKNOWN ---------------------------------------- Hello, it looks like win32 version of TCPServer is not thread safe. I've extracted the following code from project: ``` ruby 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. -- https://bugs.ruby-lang.org/ Unsubscribe: