Skip to content

Commit a211956

Browse files
committedFeb 6, 2023
Fix possible exit_counters memory leak in ZTS build
1 parent 49551d7 commit a211956

File tree

2 files changed

+18
-4
lines changed

2 files changed

+18
-4
lines changed
 

‎ext/opcache/jit/zend_jit.c

+11-4
Original file line numberDiff line numberDiff line change
@@ -4759,6 +4759,13 @@ static void zend_jit_globals_ctor(zend_jit_globals *jit_globals)
47594759
zend_jit_trace_init_caches();
47604760
}
47614761

4762+
#ifdef ZTS
4763+
static void zend_jit_globals_dtor(zend_jit_globals *jit_globals)
4764+
{
4765+
zend_jit_trace_free_caches();
4766+
}
4767+
#endif
4768+
47624769
static int zend_jit_parse_config_num(zend_long jit)
47634770
{
47644771
if (jit == 0) {
@@ -4871,7 +4878,7 @@ ZEND_EXT_API int zend_jit_debug_config(zend_long old_val, zend_long new_val, int
48714878
ZEND_EXT_API void zend_jit_init(void)
48724879
{
48734880
#ifdef ZTS
4874-
jit_globals_id = ts_allocate_id(&jit_globals_id, sizeof(zend_jit_globals), (ts_allocate_ctor) zend_jit_globals_ctor, NULL);
4881+
jit_globals_id = ts_allocate_id(&jit_globals_id, sizeof(zend_jit_globals), (ts_allocate_ctor) zend_jit_globals_ctor, zend_jit_globals_dtor);
48754882
#else
48764883
zend_jit_globals_ctor(&jit_globals);
48774884
#endif
@@ -5071,9 +5078,9 @@ ZEND_EXT_API void zend_jit_shutdown(void)
50715078
zend_jit_perf_jitdump_close();
50725079
}
50735080
#endif
5074-
if (JIT_G(exit_counters)) {
5075-
free(JIT_G(exit_counters));
5076-
}
5081+
#ifndef ZTS
5082+
zend_jit_trace_free_caches();
5083+
#endif
50775084
}
50785085

50795086
static void zend_jit_reset_counters(void)

‎ext/opcache/jit/zend_jit_trace.c

+7
Original file line numberDiff line numberDiff line change
@@ -8324,6 +8324,13 @@ static void zend_jit_trace_reset_caches(void)
83248324
#endif
83258325
}
83268326

8327+
static void zend_jit_trace_free_caches(void)
8328+
{
8329+
if (JIT_G(exit_counters)) {
8330+
free(JIT_G(exit_counters));
8331+
}
8332+
}
8333+
83278334
static void zend_jit_trace_restart(void)
83288335
{
83298336
ZEND_JIT_TRACE_NUM = 1;

0 commit comments

Comments
 (0)