Project

General

Profile

Actions

Bug #15263

open

[PATCH] vm_trace.c (postponed_job_register): only hit main thread

Added by normalperson (Eric Wong) almost 3 years ago.

Status:
Open
Priority:
Normal
Target version:
-
[ruby-core:89581]
Tags:

Description

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


Related issues

Related to Ruby master - Bug #17573: Crashes in profiling tools when signals arrive in non-Ruby threadsOpenko1 (Koichi Sasada)Actions
Actions #1

Updated by alanwu (Alan Wu) 4 months ago

  • Related to Bug #17573: Crashes in profiling tools when signals arrive in non-Ruby threads added
Actions

Also available in: Atom PDF