Bug #20168
closed
Process won't exit when Ractor.select waiting a Ractor
Added by shia (Sangyong Sim) 11 months ago.
Updated 7 months ago.
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.
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.
- Status changed from Open to Closed
Also available in: Atom
PDF
Like2
Like0Like0Like0