trap(:INT)doputs"SIGINT"exitendtrap(:TERM)doputs"SIGTERM"exitendr=Ractor.newdoloopdosleep1endendRactor.select(r)# stucked.# SIGINT/SIGTERM sent to Ruby process(confirmed by trap),# but process won't exit.
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.