Project

General

Profile

Actions

Bug #20168

closed

Process won't exit when Ractor.select waiting a Ractor

Added by shia (Sangyong Sim) 10 months ago. Updated 6 months ago.

Status:
Closed
Assignee:
-
Target version:
-
[ruby-core:116106]

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 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.

Actions #3

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

Also available in: Atom PDF

Like2
Like0Like0Like0