Fix exec_env_tls assertion in module instantiation (#3844)
The execute_post_instantiate_functions may be triggered by wasm_cluster_spawn_exec_env, in which the exec_env_tls can be NULL and cause the assertion invalid. p.s. https://github.com/bytecodealliance/wasm-micro-runtime/issues/3839.
This commit is contained in:
@ -1560,8 +1560,12 @@ execute_post_instantiate_functions(AOTModuleInstance *module_inst,
|
|||||||
if (is_sub_inst) {
|
if (is_sub_inst) {
|
||||||
bh_assert(exec_env_main);
|
bh_assert(exec_env_main);
|
||||||
#ifdef OS_ENABLE_HW_BOUND_CHECK
|
#ifdef OS_ENABLE_HW_BOUND_CHECK
|
||||||
bh_assert(exec_env_tls == exec_env_main);
|
/* May come from pthread_create_wrapper, thread_spawn_wrapper and
|
||||||
(void)exec_env_tls;
|
wasm_cluster_spawn_exec_env. If it comes from the former two,
|
||||||
|
the exec_env_tls must be not NULL and equal to exec_env_main,
|
||||||
|
else if it comes from the last one, it may be NULL. */
|
||||||
|
if (exec_env_tls)
|
||||||
|
bh_assert(exec_env_tls == exec_env_main);
|
||||||
#endif
|
#endif
|
||||||
exec_env = exec_env_main;
|
exec_env = exec_env_main;
|
||||||
|
|
||||||
|
|||||||
@ -1594,8 +1594,12 @@ execute_post_instantiate_functions(WASMModuleInstance *module_inst,
|
|||||||
if (is_sub_inst) {
|
if (is_sub_inst) {
|
||||||
bh_assert(exec_env_main);
|
bh_assert(exec_env_main);
|
||||||
#ifdef OS_ENABLE_HW_BOUND_CHECK
|
#ifdef OS_ENABLE_HW_BOUND_CHECK
|
||||||
bh_assert(exec_env_tls == exec_env_main);
|
/* May come from pthread_create_wrapper, thread_spawn_wrapper and
|
||||||
(void)exec_env_tls;
|
wasm_cluster_spawn_exec_env. If it comes from the former two,
|
||||||
|
the exec_env_tls must be not NULL and equal to exec_env_main,
|
||||||
|
else if it comes from the last one, it may be NULL. */
|
||||||
|
if (exec_env_tls)
|
||||||
|
bh_assert(exec_env_tls == exec_env_main);
|
||||||
#endif
|
#endif
|
||||||
exec_env = exec_env_main;
|
exec_env = exec_env_main;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user