From: nobu@... Date: 2014-12-16T01:18:43+00:00 Subject: [ruby-core:66866] [ruby-trunk - Bug #10595] interrupts not handled while finalizers running Issue #10595 has been updated by Nobuyoshi Nakada. Yes, but interruptions of finalizers could cause serious undesirable results. ---------------------------------------- Bug #10595: interrupts not handled while finalizers running https://bugs.ruby-lang.org/issues/10595#change-50422 * Author: Eric Wong * Status: Closed * Priority: Normal * Assignee: * Category: core * Target version: current: 2.2.0 * ruby -v: trunk * Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN ---------------------------------------- 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. -- https://bugs.ruby-lang.org/