[ruby-core:65097] [ruby-trunk - Bug #9356] TCPSocket.new does not seem to handle INTR

From: normalperson@...
Date: 2014-09-17 21:30:29 UTC
List: ruby-core #65097
Issue #9356 has been updated by Eric Wong.


 I've squashed my v5 and v4 patches together as r47617.  Thanks NoICE for
 the confirmation on OSX (where this problem was originally reported).
 
 usa:  We may need additional testing on WIN32, but I think
 rb_wait_for_single_fd works around many existing compatibility
 issues.  Thanks.

----------------------------------------
Bug #9356: TCPSocket.new does not seem to handle INTR
https://bugs.ruby-lang.org/issues/9356#change-48959

* Author: Charlie Somerville
* Status: Closed
* Priority: Normal
* Assignee: 
* Category: 
* Target version: 
* ruby -v: -
* Backport: 1.9.3: UNKNOWN, 2.0.0: REQUIRED, 2.1: REQUIRED
----------------------------------------
TCPSocket.new does not seem to handle EINTR properly.

In the attached test script, I try to open a TCP connection to my server and make an HTTP request while a background thread continually sends a signal to the process.

This causes the #write call to fail with:

x.rb:13:in `write': Socket is not connected (Errno::ENOTCONN)
	from x.rb:13:in `<main>'

This also appears to affect 2.0.0. 1.9.3 is unaffected.

---Files--------------------------------
socket-eintr.rb (207 Bytes)
wait_connectable_infinite_loop_minimal_fix.diff (478 Bytes)


-- 
https://bugs.ruby-lang.org/

In This Thread