ActionsLike0
Bug #9547
closedTCPSocket.new causes an infinite loop when interrupted by a signal
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.
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