[#60404] is RB_GC_GUARD needed in rb_io_syswrite? — Eric Wong <normalperson@...>
I haven't gotten it to crash as-is, but it seems like we need to
4 messages
2014/02/01
[#60682] volatile usages — Eric Wong <normalperson@...>
Hi all, I went ahead and removed some use of volatile which were once
5 messages
2014/02/13
[#60794] [RFC] rearrange+pack vtm and time_object structs — Eric Wong <normalperson@...>
Extracted from addendum on top of Feature #9362 (cache-aligned objects).
4 messages
2014/02/16
[#61139] [ruby-trunk - Feature #9577] [Open] [PATCH] benchmark/driver.rb: align columns in text output — normalperson@...
Issue #9577 has been reported by Eric Wong.
3 messages
2014/02/28
[ruby-core:60913] [ruby-trunk - Bug #9356] TCPSocket.new does not seem to handle INTR
From:
normalperson@...
Date:
2014-02-20 22:09:22 UTC
List:
ruby-core #60913
Issue #9356 has been updated by Eric Wong. shugo@ruby-lang.org wrote: > I'd like to hear others' thoughts. Likewise. We need to hear folks with more experience on other OSes. > Linux's connect() does return ERESTART when it's interrupted by a signal. > On Linux, connect() is restartable. Please see the following page: > > http://www.madore.org/~david/computers/connect-intr.html > > The above page describes connect() returns EINTR on Linux, but it seems to return ERESTART nowadays. > (And it describes connect() returns EADDRINUSE instead of EALREADY on FreeBSD, but it returns EALREADY now.) Interesting. Anyways I'm not against handling ERESTART. Note, POSIX connect manpage says this: If connect() is interrupted by a signal that is caught while blocked waiting to establish a connection, connect() shall fail and set errno to [EINTR], but the connection request shall not be aborted, and the connection shall be established asynchronously. ref: http://pubs.opengroup.org/onlinepubs/009695399/functions/connect.html Of course, not every system is POSIX-compliant. Anyways, I have an alternative (v3) patch here which retries connect() on EINTR and ERESTART: http://bogomips.org/ruby.git/patch?id=8f48b1862 (also note my new switch/case style to avoid inline ifdef :) However, I still prefer my v2 if possible: http://bogomips.org/ruby.git/patch?id=f5e2eb00e5 ---------------------------------------- Bug #9356: TCPSocket.new does not seem to handle INTR https://bugs.ruby-lang.org/issues/9356#change-45312 * Author: Charlie Somerville * Status: Open * Priority: Normal * Assignee: * Category: * Target version: * ruby -v: - * Backport: 1.9.3: UNKNOWN, 2.0.0: UNKNOWN, 2.1: UNKNOWN ---------------------------------------- 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) -- http://bugs.ruby-lang.org/