Issue #15263 has been reported by normalperson (Eric Wong).

----------------------------------------
Bug #15263: [PATCH] vm_trace.c (postponed_job_register): only hit main thread
https://bugs.ruby-lang.org/issues/15263

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