[ruby-cvs:66204] normal:r59028 (trunk): IO#close: do not enqueue redundant interrupts (take #2)

normal at ruby-lang.org normal at ruby-lang.org
Wed Jun 7 07:55:36 JST 2017


normal	2017-06-07 07:55:35 +0900 (Wed, 07 Jun 2017)

  New Revision: 59028

  https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=59028

  Log:
    IO#close: do not enqueue redundant interrupts (take #2)
    
    Enqueuing multiple errors for one event causes spurious errors
    down the line, as reported by Nikolay Vashchenko in
    https://bugs.ruby-lang.org/issues/13632
    
    This should fix bad interactions with test_race_gets_and_close
    in test/ruby/test_io.rb since we ensure rb_notify_fd_close
    continues returning the busy flag after enqueuing the interrupt.
    
    Backporting changes to 2.4 and earlier releases will be more
    challenging...
    
    * thread.c (rb_notify_fd_close): do not enqueue multiple interrupts
      [ruby-core:81581] [Bug #13632]
    * test/ruby/test_io.rb (test_single_exception_on_close):
      new test based on script from Nikolay

  Modified files:
    trunk/test/ruby/test_io.rb
    trunk/thread.c


More information about the ruby-cvs mailing list