Bug #2277: Patch: Fix high CPU usage on Kernel#select http://redmine.ruby-lang.org/issues/show/2277 Author: Zakaria Haris Status: Open, Priority: Normal ruby -v: 1.8.6 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); ---------------------------------------- http://redmine.ruby-lang.org