Skip to content
  • Koichi Sasada's avatar
    3427a167
    retry on cancelling of `getaddrinfo` (#11131) · 3427a167
    Koichi Sasada authored
    When the registerred unblock function is called, it should retry
    the cancelled blocking function if possible after checkints.
    
    For example, `SIGCHLD` can cancel this method, but it should not
    raise any exception if there is no trap handlers.
    
    The following is repro-code:
    
    ```ruby
    require 'socket'
    PN = 10_000
    
    1000000.times{
      p _1
      PN.times{
        fork{
          sleep rand(0.3)
        }
      }
      i = 0
      while i<PN
        cpid = Process.wait -1, Process::WNOHANG
        if cpid
          # p [i, cpid]
          i += 1
        end
    
        begin
          TCPServer.new(nil, 0).close
        rescue
          p $!
          exit!
        end
      end
    }
    ```
    3427a167
    retry on cancelling of `getaddrinfo` (#11131)
    Koichi Sasada authored
    When the registerred unblock function is called, it should retry
    the cancelled blocking function if possible after checkints.
    
    For example, `SIGCHLD` can cancel this method, but it should not
    raise any exception if there is no trap handlers.
    
    The following is repro-code:
    
    ```ruby
    require 'socket'
    PN = 10_000
    
    1000000.times{
      p _1
      PN.times{
        fork{
          sleep rand(0.3)
        }
      }
      i = 0
      while i<PN
        cpid = Process.wait -1, Process::WNOHANG
        if cpid
          # p [i, cpid]
          i += 1
        end
    
        begin
          TCPServer.new(nil, 0).close
        rescue
          p $!
          exit!
        end
      end
    }
    ```
Loading