[#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:60822] Re: [ruby-trunk - Bug #9356] TCPSocket.new does not seem to handle INTR
From:
Eric Wong <normalperson@...>
Date:
2014-02-18 10:36:41 UTC
List:
ruby-core #60822
"U.Nakamura" <usa@garbagecollect.jp> wrote: > In message "[ruby-core:60819] [ruby-trunk - Bug #9356] TCPSocket.new does not seem to handle INTR" > on Feb.18,2014 18:34:40, <shugo@ruby-lang.org> wrote: > > Does anybody know why the following code in ext/socket/init.c is necessary? > > > > if (sockerr == 0) > > continue; /* workaround for winsock */ > > It was introduced at r7931 by me (9 years ago!), > but I forgot the reason. > If my comment of those days is believed, we may wrap it > with #ifdef_WIN32. OK. I wonder if we should even use getsockopt(SO_ERROR) at all. I know there's much literature which recommends it, but any error check in this way is racy. Better to let any subsequent write/read/send/recv/etc error out. The following should work: connect() -> EINPROGRESS rb_wait_for_single_fd -> (must retry on EINTR) (user calls) write() -> 0, ENOTCONN, EPIPE, ... Note: rb_wait_for_single_fd is necessary in FreeBSD (at least) to avoid ENOTCONN, Linux just returns EAGAIN on write if write immediately after connect.