[ruby-core:116106] [Ruby master Bug#20168] Process won't exit when Ractor.select waiting a Ractor

Issue #20168 has been reported by shia (Sangyong Sim). ---------------------------------------- Bug #20168: Process won't exit when Ractor.select waiting a Ractor https://bugs.ruby-lang.org/issues/20168 * Author: shia (Sangyong Sim) * Status: Open * Priority: Normal * ruby -v: 3.3.0 * Backport: 3.0: UNKNOWN, 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN ---------------------------------------- ## Reproduction code ```ruby trap(:INT) do puts "SIGINT" exit end trap(:TERM) do puts "SIGTERM" exit end r = Ractor.new do loop do sleep 1 end end Ractor.select(r) # stucked. # SIGINT/SIGTERM sent to Ruby process(confirmed by trap), # but process won't exit. ``` ## Expected behavior Process killed successfully with exit code 0. ## Affected Ruby version 3.3.0 3.2.x works as expected. -- https://bugs.ruby-lang.org/

Issue #20168 has been updated by luke-gru (Luke Gruber). Patch here: https://github.com/ruby/ruby/pull/9492 ---------------------------------------- Bug #20168: Process won't exit when Ractor.select waiting a Ractor https://bugs.ruby-lang.org/issues/20168#change-106188 * Author: shia (Sangyong Sim) * Status: Open * Priority: Normal * ruby -v: 3.3.0 * Backport: 3.0: UNKNOWN, 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN ---------------------------------------- ## Reproduction code ```ruby trap(:INT) do puts "SIGINT" exit end trap(:TERM) do puts "SIGTERM" exit end r = Ractor.new do loop do sleep 1 end end Ractor.select(r) # stucked. # SIGINT/SIGTERM sent to Ruby process(confirmed by trap), # but process won't exit. ``` ## Expected behavior Process killed successfully with exit code 0. ## Affected Ruby version 3.3.0 3.2.x works as expected. -- https://bugs.ruby-lang.org/

Issue #20168 has been updated by over.rye@gmail.com (Masato Ohba). I think I have encountered the same issue. I was able to reproduce the problem using a simpler code that results in a process hang when a Ractor, which internally raises an exception, is passed to `Ractor.select`. Here is the minimal code snippet that demonstrates the issue: ```ruby ruby -e "r = Ractor.new{1/0}; Ractor.select(*[r])" ``` Notably, when I built Ruby using the branch from https://github.com/ruby/ruby/pull/9492, the issue did not occur. It appears that the changes in this branch might contain a fix or alter the behavior to prevent the hang. ---------------------------------------- Bug #20168: Process won't exit when Ractor.select waiting a Ractor https://bugs.ruby-lang.org/issues/20168#change-107474 * Author: shia (Sangyong Sim) * Status: Open * ruby -v: 3.3.0 * Backport: 3.0: UNKNOWN, 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN ---------------------------------------- ## Reproduction code ```ruby trap(:INT) do puts "SIGINT" exit end trap(:TERM) do puts "SIGTERM" exit end r = Ractor.new do loop do sleep 1 end end Ractor.select(r) # stucked. # SIGINT/SIGTERM sent to Ruby process(confirmed by trap), # but process won't exit. ``` ## Expected behavior Process killed successfully with exit code 0. ## Affected Ruby version 3.3.0 3.2.x works as expected. -- https://bugs.ruby-lang.org/
participants (3)
-
luke-gru (Luke Gruber)
-
over.rye@gmail.com (Masato Ohba)
-
shia (Sangyong Sim)