From 2b49a0b817f3ec21ace854764fcdd8c84ed6e1c6 Mon Sep 17 00:00:00 2001 From: YAMAMOTO Takashi Date: Wed, 29 Jun 2022 14:21:03 +0900 Subject: [PATCH] wasm_cluster_spread_custom_data: Fix a crash when called before exec (#1257) --- .../libraries/thread-mgr/thread_manager.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/core/iwasm/libraries/thread-mgr/thread_manager.c b/core/iwasm/libraries/thread-mgr/thread_manager.c index 16f73e13..93212b0c 100644 --- a/core/iwasm/libraries/thread-mgr/thread_manager.c +++ b/core/iwasm/libraries/thread-mgr/thread_manager.c @@ -937,12 +937,18 @@ wasm_cluster_spread_custom_data(WASMModuleInstanceCommon *module_inst, void *custom_data) { WASMExecEnv *exec_env = wasm_clusters_search_exec_env(module_inst); - WASMCluster *cluster = NULL; - bh_assert(exec_env); - cluster = wasm_exec_env_get_cluster(exec_env); - bh_assert(cluster); + if (exec_env == NULL) { + /* Maybe threads have not been started yet. */ + wasm_runtime_set_custom_data_internal(module_inst, custom_data); + } + else { + WASMCluster *cluster; - traverse_list(&cluster->exec_env_list, set_custom_data_visitor, - custom_data); + cluster = wasm_exec_env_get_cluster(exec_env); + bh_assert(cluster); + + traverse_list(&cluster->exec_env_list, set_custom_data_visitor, + custom_data); + } }