From 18a6320306c136dfd7cdbf47f0fbe08a7cc86d53 Mon Sep 17 00:00:00 2001 From: Daniil Gentili Date: Wed, 11 Jun 2025 13:35:12 +0200 Subject: [PATCH 1/5] Allow using fast destruction path when ASAN is in use --- Zend/zend_execute_API.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Zend/zend_execute_API.c b/Zend/zend_execute_API.c index 9a7803e44e66e..65227eb86e7b7 100644 --- a/Zend/zend_execute_API.c +++ b/Zend/zend_execute_API.c @@ -438,6 +438,8 @@ void shutdown_executor(void) /* {{{ */ zval *zv; #if ZEND_DEBUG bool fast_shutdown = 0; +#elif defined(__SANITIZE_ADDRESS__) + bool fast_shutdown = !EG(full_tables_cleanup); #else bool fast_shutdown = is_zend_mm() && !EG(full_tables_cleanup); #endif From 4eea26f3373a595dc5b52cf569db8411986401b4 Mon Sep 17 00:00:00 2001 From: Daniil Gentili Date: Mon, 16 Jun 2025 11:42:59 +0200 Subject: [PATCH 2/5] Add ZEND_FORCE_FAST_SHUTDOWN conditional --- Zend/zend_execute_API.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Zend/zend_execute_API.c b/Zend/zend_execute_API.c index 65227eb86e7b7..170d99889b7d6 100644 --- a/Zend/zend_execute_API.c +++ b/Zend/zend_execute_API.c @@ -439,7 +439,11 @@ void shutdown_executor(void) /* {{{ */ #if ZEND_DEBUG bool fast_shutdown = 0; #elif defined(__SANITIZE_ADDRESS__) - bool fast_shutdown = !EG(full_tables_cleanup); + char *forceFastShutdown = getenv("ZEND_FORCE_FAST_SHUTDOWN"); + bool fast_shutdown = ( + is_zend_mm() + || (forceFastShutdown && ZEND_ATOL(forceFastShutdown)) + ) && EG(full_tables_cleanup); #else bool fast_shutdown = is_zend_mm() && !EG(full_tables_cleanup); #endif From 88319f7b7b18b6dc484c44967efc754663898015 Mon Sep 17 00:00:00 2001 From: Daniil Gentili Date: Mon, 16 Jun 2025 11:49:45 +0200 Subject: [PATCH 3/5] Fix --- Zend/zend_execute_API.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Zend/zend_execute_API.c b/Zend/zend_execute_API.c index 170d99889b7d6..eb529f9c9ad4c 100644 --- a/Zend/zend_execute_API.c +++ b/Zend/zend_execute_API.c @@ -443,7 +443,7 @@ void shutdown_executor(void) /* {{{ */ bool fast_shutdown = ( is_zend_mm() || (forceFastShutdown && ZEND_ATOL(forceFastShutdown)) - ) && EG(full_tables_cleanup); + ) && !EG(full_tables_cleanup); #else bool fast_shutdown = is_zend_mm() && !EG(full_tables_cleanup); #endif From 3ef8ebde042041b18a825a319324255239ef6967 Mon Sep 17 00:00:00 2001 From: Daniil Gentili Date: Wed, 18 Jun 2025 21:55:25 +0200 Subject: [PATCH 4/5] Fixup casing --- Zend/zend_execute_API.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Zend/zend_execute_API.c b/Zend/zend_execute_API.c index eb529f9c9ad4c..1135d823a3246 100644 --- a/Zend/zend_execute_API.c +++ b/Zend/zend_execute_API.c @@ -439,10 +439,10 @@ void shutdown_executor(void) /* {{{ */ #if ZEND_DEBUG bool fast_shutdown = 0; #elif defined(__SANITIZE_ADDRESS__) - char *forceFastShutdown = getenv("ZEND_FORCE_FAST_SHUTDOWN"); + char *force_fast_shutdown = getenv("ZEND_FORCE_FAST_SHUTDOWN"); bool fast_shutdown = ( is_zend_mm() - || (forceFastShutdown && ZEND_ATOL(forceFastShutdown)) + || (force_fast_shutdown && ZEND_ATOL(force_fast_shutdown)) ) && !EG(full_tables_cleanup); #else bool fast_shutdown = is_zend_mm() && !EG(full_tables_cleanup); From fbcaba7a91933c686697e5ca66141805452b0c27 Mon Sep 17 00:00:00 2001 From: Daniil Gentili Date: Mon, 23 Jun 2025 10:58:01 +0200 Subject: [PATCH 5/5] Rename envvar --- Zend/zend_execute_API.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Zend/zend_execute_API.c b/Zend/zend_execute_API.c index 1135d823a3246..18e7028957f71 100644 --- a/Zend/zend_execute_API.c +++ b/Zend/zend_execute_API.c @@ -439,7 +439,7 @@ void shutdown_executor(void) /* {{{ */ #if ZEND_DEBUG bool fast_shutdown = 0; #elif defined(__SANITIZE_ADDRESS__) - char *force_fast_shutdown = getenv("ZEND_FORCE_FAST_SHUTDOWN"); + char *force_fast_shutdown = getenv("ZEND_ASAN_FORCE_FAST_SHUTDOWN"); bool fast_shutdown = ( is_zend_mm() || (force_fast_shutdown && ZEND_ATOL(force_fast_shutdown))