From: merch-redmine@... Date: 2019-08-28T18:32:34+00:00 Subject: [ruby-core:94633] [Ruby master Bug#15509] TCPServer#accept isn't interrupted Issue #15509 has been updated by jeremyevans0 (Jeremy Evans). Status changed from Open to Closed This problem appears fixed in 2.6.4 and 2.7.0-preview1 in my environment (OpenBSD-amd64). It still occurs in 2.5.6. If it still occurs for you in 2.6.4, please reopen. ---------------------------------------- Bug #15509: TCPServer#accept isn't interrupted https://bugs.ruby-lang.org/issues/15509#change-81230 * Author: larskanis (Lars Kanis) * Status: Closed * Priority: Normal * Assignee: * Target version: * ruby -v: ruby 2.6.0p0 (2018-12-25 revision 66547) [x86_64-linux] * Backport: 2.4: UNKNOWN, 2.5: UNKNOWN, 2.6: UNKNOWN ---------------------------------------- This is another issue I noticed with [Eventbox](https://github.com/larskanis/eventbox): This script tries to stop `TCPServer#accept` with `Thread#raise`: ```ruby require "socket" Thread.abort_on_exception = true class Stop < RuntimeError end serv = TCPServer.new("localhost", 12345) th = Thread.handle_interrupt(Exception => :never) do Thread.new do begin Thread.handle_interrupt(Stop => :on_blocking) do # sleep # sleep is aborted serv.accept # but accept isn't end rescue Stop end end end th.raise Stop th.join serv.close ``` The program freezes and if stopped per CTRL-C the output looks similar to: ```sh $ ruby -d --disable-gems no-interrupt-while-accept.rb ^CException `Interrupt' at no-interrupt-while-accept.rb:23 - Exception `Stop' at no-interrupt-while-accept.rb:15 - Stop Traceback (most recent call last): 1: from no-interrupt-while-accept.rb:23:in `
' no-interrupt-while-accept.rb:23:in `join': Interrupt ``` The debug output shows, that the `Stop` exception is delivered after the `Interrupt` exception has been delivered to the main thread. However it should be delivered immediately, since it's a blocking operation. In contrast `sleep` is aborted as expected. This issue is present on all older MRI versions. However it doesn't appear on JRuby-9.2.5.0. -- https://bugs.ruby-lang.org/ Unsubscribe: