Project

General

Profile

Actions

Bug #10595

closed

interrupts not handled while finalizers running

Added by normalperson (Eric Wong) about 10 years ago. Updated about 10 years ago.

Status:
Closed
Assignee:
-
Target version:
ruby -v:
trunk
[ruby-core:66825]

Description

Originally noted in [ruby-core:66635]

Trying to Ctrl-C something like the following loop is not always successful:

f = proc { 1000.times {} }
loop do
  ObjectSpace.define_finalizer(Object.new, f)
end

The Interrupt is created and raised, but lost during the postponed
job processing (rb_postponed_job_flush).

Trying to mask out all interrupt flags (instead of just
th->interrupt_mask |= POSTPONED_JOB_INTERRUPT_MASK) allows the
interrupt to be handled, but this is not suitable for expensive
finalizers.

So I haven't figured out how to fix this, yet... Help appreciated, thanks.

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0