[#58730] [ruby-trunk - misc #9188][Open] r43870 make benchmark/bm_so_k_nucleotide.rb slow — "authorNari (Narihiro Nakamura)" <authorNari@...>

17 messages 2013/12/01

[#58732] [ruby-trunk - Bug #9189][Open] Build failure on Windows in case of nonascii TEMP environment. — "phasis68 (Heesob Park)" <phasis@...>

11 messages 2013/12/01

[#58750] [ruby-trunk - Feature #9190][Open] Expose serial helper macros — "simeonwillbanks (Simeon Willbanks)" <sfw@...>

13 messages 2013/12/01

[#58756] [ruby-trunk - Bug #9192][Open] Inconsistent comparison between Float and BigDecimal — "vatsu (Gustavo Sales)" <vatsu21@...>

18 messages 2013/12/02

[#58797] [ruby-trunk - Bug #9198][Open] Segfault in TestException#test_machine_stackoverflow — "vo.x (Vit Ondruch)" <v.ondruch@...>

11 messages 2013/12/02

[#58833] [ruby-trunk - Bug #9205][Open] Assertion failed: heap_pages_deferred_final == 0 — "phasis68 (Heesob Park)" <phasis@...>

11 messages 2013/12/03

[#58866] [ruby-trunk - misc #9215][Open] Maintenance Policy for Future Releases (2.1.0 & beyond) — "hone (Terence Lee)" <hone02@...>

17 messages 2013/12/05

[#58876] [ruby-trunk - Bug #9221][Open] Time.parse performance becomes exponentially worse as string length grows — "mpelzsherman (Michael Pelz-Sherman)" <mpelzsherman@...>

15 messages 2013/12/05

[#58948] [ruby-trunk - Bug #9226][Open] Getting method `inspect' called on unexpected T_NODE object (0x000000025ddea8 flags=0x109089c klass=0x0) (NotImplementedError) from Hash#inspect — "myronmarston (Myron Marston)" <myron.marston@...>

11 messages 2013/12/07

[#59032] [ruby-trunk - Bug #9239][Open] Array#to_h ignores flat arrays — "sawa (Tsuyoshi Sawada)" <sawadatsuyoshi@...>

15 messages 2013/12/10

[#59122] [ruby-trunk - Bug #9251][Open] ! operator has lower precedence than = in an assignment expression — "rits (First Last)" <redmine@...>

26 messages 2013/12/15

[#59198] [ruby-trunk - Bug #9262][Open] global_method_cache should be configurable or grow automatically — "tmm1 (Aman Gupta)" <ruby@...1.net>

28 messages 2013/12/19

[#59209] [ruby-trunk - Bug #9264][Open] Compiling error: encdb.bundle Undefined symbols for architecture x86_64 — "spastorino (Santiago Pastorino)" <santiago@...>

15 messages 2013/12/19
[#59211] [ruby-trunk - Bug #9264][Feedback] Compiling error: encdb.bundle Undefined symbols for architecture x86_64 — "zzak (Zachary Scott)" <e@...> 2013/12/19

[#59212] Re: [ruby-trunk - Bug #9264][Feedback] Compiling error: encdb.bundle Undefined symbols for architecture x86_64 — Santiago Pastorino <spastorino@...> 2013/12/19

zzak, make distclean is the first thing I've ran. Read the gist again :),

[#59213] Re: [ruby-trunk - Bug #9264][Feedback] Compiling error: encdb.bundle Undefined symbols for architecture x86_64 — Zachary Scott <e@...> 2013/12/19

Sorry I missed the gist, can you try building outside of $srcdir?

[#59214] Re: [ruby-trunk - Bug #9264][Feedback] Compiling error: encdb.bundle Undefined symbols for architecture x86_64 — Santiago Pastorino <spastorino@...> 2013/12/19

It works if I do ...

[#59215] Re: [ruby-trunk - Bug #9264][Feedback] Compiling error: encdb.bundle Undefined symbols for architecture x86_64 — Zachary Scott <e@...> 2013/12/19

I've been using the following:

[#59255] [ruby-trunk - Bug #9276][Open] "RUBY_FREE_MIN is obsolete. Use RUBY_GC_HEAP_FREE_SLOTS instead" warning should not be issued when both ENV vars are set. — "myronmarston (Myron Marston)" <myron.marston@...>

10 messages 2013/12/21

[#59260] [ruby-trunk - Feature #9278][Open] Magic comment "immutable: string" makes "literal".freeze the default for that file — "colindkelley (Colin Kelley)" <colin@...>

12 messages 2013/12/22

[#59343] [ruby-trunk - Bug #9309][Open] Crash while running tests — "mdemare (Michiel de MAre)" <merloen@...>

12 messages 2013/12/27

[#59345] [ruby-trunk - Bug #9310][Open] inheritance.rb: 27: [BUG] Segmentation fault at 0x00000c — "jasnow (Al Snow)" <jasnow@...>

10 messages 2013/12/27

[#59349] [ruby-trunk - Bug #9312][Open] Build the ruby executable in bin/ — "postmodern (Hal Brodigan)" <postmodern.mod3@...>

13 messages 2013/12/28

[#59365] [ruby-trunk - Bug #9316][Open] BigDecimal division in Ruby 2.1 — "abernardes (Andre Oliveira)" <abernardes@...>

15 messages 2013/12/28

[#59398] [ruby-trunk - Bug #9321][Open] rb_mod_const_missing does not generate a c-return event — "drkaes (Stefan Kaes)" <stkaes@...>

41 messages 2013/12/30

[#59429] [ruby-trunk - Feature #9330][Open] [PATCH 0/3] avoid redundant fcntl/fstat syscalls for cloexec sockets — "normalperson (Eric Wong)" <normalperson@...>

10 messages 2013/12/31

[ruby-core:59429] [ruby-trunk - Feature #9330][Open] [PATCH 0/3] avoid redundant fcntl/fstat syscalls for cloexec sockets

From: "normalperson (Eric Wong)" <normalperson@...>
Date: 2013-12-31 02:22:57 UTC
List: ruby-core #59429
Issue #9330 has been reported by normalperson (Eric Wong).

----------------------------------------
Feature #9330: [PATCH 0/3] avoid redundant fcntl/fstat syscalls for cloexec sockets
https://bugs.ruby-lang.org/issues/9330

Author: normalperson (Eric Wong)
Status: Open
Priority: Low
Assignee: 
Category: ext
Target version: next minor


commit 52525b673669019dc3c03474e613937fd3587187
Author: Eric Wong <e@80x24.org>
Date:   Tue Dec 31 02:09:27 2013 +0000

    socket: avoid redundant fcntl calls for FD passing
    
    If MSG_CMSG_CLOEXEC works on the first recvmsg syscall, we should
    assume it always works and avoid checking it with every single FD
    received.
    
    While we're at it, it is pointless to set FD_CLOEXEC immediately
    before we close it in discard_cmsg; so only update the max FD (the
    FD is likely to be recycled, so we should update even if we close
    it).
    
    Note: I think it's safe to assume any system with MSG_CMSG_CLOEXEC
    will have implemented SOCK_CLOEXEC; too, so we reuse use
    rsock_detect_cloexec instead of defining a new function wrapped
    by #ifdef MSG_CMSG_CLOEXEC.

commit aa9ed17a5f10cf53f72dc5ab1f4ff8d8b5e4dd84
Author: Eric Wong <e@80x24.org>
Date:   Tue Dec 31 01:36:27 2013 +0000

    socket: avoid redundant calls to rb_update_max_fd
    
    rsock_init_sock already calls rb_update_max_fd, so do not
    waste time making redundant fstat() and atomic CAS instructions.

commit b1694d7bac55bd9f537426624fe599c46b10dee6
Author: Eric Wong <e@80x24.org>
Date:   Mon Dec 30 23:58:32 2013 +0000

    socket: avoid redundant fcntl(fd, F_GETFD) with SOCK_CLOEXEC
    
    If socket or socketpair succeeds with SOCK_CLOEXEC once, we should
    expect it to succeed for all subsequent invocations of each of those
    syscalls.  This reduces the number of syscalls made and makes strace
    output cleaner.
    
    While we're at it, swap some remaining rb_fd_fix_cloexec calls for
    rb_maygvl_fd_fix_cloexec, as the former calls rb_update_max_fd
    redundantly.  A future commit will reduce rb_update_max_fd calls
    further.


The following changes since commit d6c7ab9ffeff31fb5a49776ab74a61b478344107:

  * 2013-12-31 (2013-12-30 19:48:05 +0000)

are available in the git repository at:

  git://bogomips.org/ruby.git socket_cloexec_once

for you to fetch changes up to 52525b673669019dc3c03474e613937fd3587187:

  socket: avoid redundant fcntl calls for FD passing (2013-12-31 02:17:53 +0000)

----------------------------------------------------------------
Eric Wong (3):
      socket: avoid redundant fcntl(fd, F_GETFD) with SOCK_CLOEXEC
      socket: avoid redundant calls to rb_update_max_fd
      socket: avoid redundant fcntl calls for FD passing

 ext/socket/ancdata.c    |  9 +++++++--
 ext/socket/init.c       | 49 ++++++++++++++++++++++++++++++++++++++-----------
 ext/socket/rubysocket.h |  2 ++
 ext/socket/socket.c     | 31 ++++++++++++++++++++++---------
 ext/socket/unixsocket.c | 10 ++++++++--
 5 files changed, 77 insertions(+), 24 deletions(-)



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

In This Thread

Prev Next