Actions
Bug #20168
closedProcess won't exit when Ractor.select waiting a Ractor
Description
Reproduction code¶
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.
Updated by luke-gru (Luke Gruber) 10 months ago
Patch here: https://github.com/ruby/ruby/pull/9492
Updated by over.rye@gmail.com (Masato Ohba) 8 months ago ยท Edited
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 -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.
Updated by luke-gru (Luke Gruber) 6 months ago
- Status changed from Open to Closed
Applied in changeset git|6747fbe77dcac26a457bb1386f55f3c27321040a.
Fix interrupts during Ractor.select
Fixes [Bug #20168]
Actions
Like2
Like0Like0Like0