From dfdea3a9704c89171b1165223ee819c5036a590a Mon Sep 17 00:00:00 2001 From: laipg91 Date: Tue, 7 Jul 2026 10:46:09 +0700 Subject: [PATCH 1/2] If multiple instance spawned, DTOR may make race condition to static variable, the current instance will lost all callbacks --- native/extensions/assets-manager/AssetsManagerEx.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/native/extensions/assets-manager/AssetsManagerEx.cpp b/native/extensions/assets-manager/AssetsManagerEx.cpp index 9378541e40a..5d481053632 100644 --- a/native/extensions/assets-manager/AssetsManagerEx.cpp +++ b/native/extensions/assets-manager/AssetsManagerEx.cpp @@ -114,7 +114,11 @@ AssetsManagerEx::~AssetsManagerEx() { CC_SAFE_RELEASE(_tempManifest); } CC_SAFE_RELEASE(_remoteManifest); - assetsManager = nullptr; + if(assetsManager == this){ + //avoid race conditon to current static variable + assetsManager = nullptr; + } + } AssetsManagerEx *AssetsManagerEx::create(const std::string &manifestUrl, const std::string &storagePath) { From 392cbbb3f34255089c3ea0161f0f8f1b1ef6683f Mon Sep 17 00:00:00 2001 From: laipg91 Date: Tue, 7 Jul 2026 10:48:06 +0700 Subject: [PATCH 2/2] Fix DTOR AssetManagerEx: If multiple instance spawned, DTOR may make race condition to static variable, the current instance will lost all callbacks --- native/extensions/assets-manager/AssetsManagerEx.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/native/extensions/assets-manager/AssetsManagerEx.cpp b/native/extensions/assets-manager/AssetsManagerEx.cpp index 5d481053632..74378333b59 100644 --- a/native/extensions/assets-manager/AssetsManagerEx.cpp +++ b/native/extensions/assets-manager/AssetsManagerEx.cpp @@ -115,7 +115,7 @@ AssetsManagerEx::~AssetsManagerEx() { } CC_SAFE_RELEASE(_remoteManifest); if(assetsManager == this){ - //avoid race conditon to current static variable + //avoid race conditon to current static variable. assetsManager = nullptr; }