Project

General

Profile

This project is closed and read-only.

Actions

Backport #2277

closed

Patch: Fix high CPU usage on Kernel#select

Backport #2277: Patch: Fix high CPU usage on Kernel#select

Added by zakaria (Zakaria Haris) almost 17 years ago. Updated about 7 years ago.


Description

=begin
This bug brought my server down two times.
While my patch for p111 it still exist in p287.

diff -ru ruby-1.8.6-p111.orig/io.c ruby-1.8.6-p111/io.c
--- ruby-1.8.6-p111.orig/io.c Tue May 22 23:28:10 2007
+++ ruby-1.8.6-p111/io.c Sun Aug 30 19:08:09 2009
@@ -4802,12 +4802,12 @@
if (!pending && n == 0) return Qnil; /* returns nil on timeout */

  res = rb_ary_new2(3);
  • rb_ary_push(res, rp?rb_ary_new():rb_ary_new2(0));
  • rb_ary_push(res, (rp||pending)?rb_ary_new():rb_ary_new2(0));
    rb_ary_push(res, wp?rb_ary_new():rb_ary_new2(0));
    rb_ary_push(res, ep?rb_ary_new():rb_ary_new2(0));

    if (interrupt_flag == 0) {

  • if (rp) {
  • if (rp || pending) {
    list = RARRAY(res)->ptr[0];
    for (i=0; i< RARRAY(read)->len; i++) {
    GetOpenFile(rb_io_get_io(RARRAY(read)->ptr[i]), fptr);
    =end

Updated by nobu (Nobuyoshi Nakada) almost 17 years ago Actions #1

=begin
Hi,

At Mon, 26 Oct 2009 22:55:47 +0900,
Zakaria Haris wrote in [ruby-core:26323]:

 res = rb_ary_new2(3);
  • rb_ary_push(res, rp?rb_ary_new():rb_ary_new2(0));
  • rb_ary_push(res, (rp||pending)?rb_ary_new():rb_ary_new2(0));

Seems curious. When pending is non-zero, rp should be always
set.

--
Nobu Nakada

=end

Updated by nobu (Nobuyoshi Nakada) almost 17 years ago Actions #2

  • Status changed from Open to Feedback

=begin

=end

Updated by ujihisa (Tatsuhiro Ujihisa) almost 17 years ago Actions #3

  • Assignee set to nobu (Nobuyoshi Nakada)

=begin

=end

Updated by rogerdpack (Roger Pack) over 16 years ago Actions #4

=begin
do you have an example of how to reproduce this?
=end

Updated by jeremyevans0 (Jeremy Evans) about 7 years ago Actions #5

  • Tracker changed from Bug to Backport
  • Project changed from 2 to 5
  • Description updated (diff)
  • Status changed from Feedback to Closed
  • ruby -v deleted (1.8.6)
Actions

Also available in: PDF Atom