Issue #15264 has been reported by normalperson (Eric Wong). ---------------------------------------- Bug #15264: [PATCH] vm_trace.c (postponed_job_register): only hit main thread https://bugs.ruby-lang.org/issues/15264 * Author: normalperson (Eric Wong) * Status: Open * Priority: Normal * Assignee: ko1 (Koichi Sasada) * Target version: * ruby -v: * Backport: 2.3: UNKNOWN, 2.4: UNKNOWN, 2.5: UNKNOWN ---------------------------------------- ``` vm_trace.c (postponed_job_register): only hit main thread Since postponed_job_register may be called in a signal handler, only the main thread is safe to touch as other threads may become invalid. Furthermore, the problem with trap interrupt being lost during ec_switch [Bug #14939] also applies to the postponed job and timer interrupts, so we need to preserve all three interrupts in ec_switch. Note: A minor problem is a possible crash during/after ruby_vm_destruct if postponed jobs are registered. The correct and performant fix would be to leak memory at exit for `vm' and `vm->main_thread'. free(3) slows down short-lived scripts, as does unregistering signal handlers. * vm_trace.c (postponed_job_register): only hit main thread * cont.c (ec_switch): preserve postponed and timer interrupt flags, too ``` ---Files-------------------------------- 0001-vm_trace.c-postponed_job_register-only-hit-main-thre.patch (5.15 KB) -- https://bugs.ruby-lang.org/ Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe> <http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>