Project

General

Profile

ActionsLike0

Bug #9547

closed

TCPSocket.new causes an infinite loop when interrupted by a signal

Added by shugo (Shugo Maeda) almost 11 years ago. Updated almost 11 years ago.

Status:
Closed
Assignee:
-
Target version:
ruby -v:
ruby 2.2.0dev (2014-02-21 trunk 45076) [x86_64-freebsd10.0]
[ruby-core:60940]

Description

The script attached in #9356 goes in an infinite loop on FreeBSD (and other platforms conforming to SUSv3).
Naruse-san asked me to create a separate ticket for backporting.

This bug seems to have been introduced by r31424.


Related issues 2 (0 open2 closed)

Related to Ruby master - Bug #9356: TCPSocket.new does not seem to handle INTRClosed01/03/2014Actions
Copied from Ruby master - Bug #9546: TCPSocket.new causes an infinite loop when interrupted by a signalRejected02/21/2014Actions

Updated by shugo (Shugo Maeda) almost 11 years ago

  • Copied from Bug #9546: TCPSocket.new causes an infinite loop when interrupted by a signal added

Updated by shugo (Shugo Maeda) almost 11 years ago

  • Status changed from Open to Closed
  • % Done changed from 0 to 100

Applied in changeset r45084.


  • ext/socket/init.c (wait_connectable): break if the socket is
    writable to avoid infinite loops on FreeBSD and other platforms
    which conforms to SUSv3. This problem cannot be reproduced with
    loopback interfaces, so it's hard to write test code.
    rsock_connect() and wait_connectable() are overly complicated, so
    they should be refactored, but I commit this fix as a workaround
    for the release of Ruby 1.9.3 scheduled on Feb 24.
    [ruby-core:60940] [Bug #9547]

Updated by usa (Usaku NAKAMURA) almost 11 years ago

  • Related to Bug #9356: TCPSocket.new does not seem to handle INTR added

Updated by usa (Usaku NAKAMURA) almost 11 years ago

  • Backport changed from 1.9.3: REQUIRED, 2.0.0: REQUIRED, 2.1: REQUIRED to 1.9.3: DONE, 2.0.0: REQUIRED, 2.1: REQUIRED

backported into ruby_1_9_3 at r45092.

Updated by nagachika (Tomoyuki Chikanaga) almost 11 years ago

  • Backport changed from 1.9.3: DONE, 2.0.0: REQUIRED, 2.1: REQUIRED to 1.9.3: DONE, 2.0.0: DONE, 2.1: REQUIRED

r45084 was backported to ruby_2_0_0 at r45103.

Updated by naruse (Yui NARUSE) almost 11 years ago

  • Backport changed from 1.9.3: DONE, 2.0.0: DONE, 2.1: REQUIRED to 1.9.3: DONE, 2.0.0: DONE, 2.1: DONE

ruby_2_1 r45129 merged revision(s) 45084.

ActionsLike0

Also available in: Atom PDF