From 67485fee42677b712a2ff002726f83f49b945564 Mon Sep 17 00:00:00 2001 From: k0kubun Date: Mon, 26 Nov 2018 15:47:20 +0000 Subject: vm_trace.c: MJIT-limited thread-safety for postponed_job [Bug #15316] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66001 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- mjit.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'mjit.c') diff --git a/mjit.c b/mjit.c index 7c8eb28481..cb84d3cd32 100644 --- a/mjit.c +++ b/mjit.c @@ -106,6 +106,20 @@ mjit_gc_finish_hook(void) CRITICAL_SECTION_FINISH(4, "mjit_gc_finish_hook"); } +/* Wrap critical section to prevent [Bug #15316] */ +void +mjit_postponed_job_register_start_hook(void) +{ + CRITICAL_SECTION_START(4, "mjit_postponed_job_register_start_hook"); +} + +/* Unwrap critical section of mjit_postponed_job_register_start_hook() */ +void +mjit_postponed_job_register_finish_hook(void) +{ + CRITICAL_SECTION_FINISH(4, "mjit_postponed_job_register_finish_hook"); +} + /* Iseqs can be garbage collected. This function should call when it happens. It removes iseq from the unit. */ void -- cgit v1.2.3