Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions core/iwasm/aot/aot_runtime.c
Original file line number Diff line number Diff line change
Expand Up @@ -1962,6 +1962,12 @@ aot_instantiate(AOTModule *module, AOTModuleInstance *parent,
module_inst->module = (void *)module;
module_inst->e =
(WASMModuleInstanceExtra *)((uint8 *)module_inst + extra_info_offset);
#if WASM_ENABLE_THREAD_MGR != 0
if (os_mutex_init(&module_inst->e->common.exception_lock) != 0) {
wasm_runtime_free(module_inst);
return NULL;
}
#endif
extra = (AOTModuleInstanceExtra *)module_inst->e;

#if WASM_ENABLE_GC != 0
Expand Down Expand Up @@ -2353,6 +2359,10 @@ aot_deinstantiate(AOTModuleInstance *module_inst, bool is_sub_inst)
wasm_exec_env_destroy((WASMExecEnv *)module_inst->exec_env_singleton);
}

#if WASM_ENABLE_THREAD_MGR != 0
os_mutex_destroy(&module_inst->e->common.exception_lock);
#endif

#if WASM_ENABLE_PERF_PROFILING != 0
if (module_inst->func_perf_profilings)
wasm_runtime_free(module_inst->func_perf_profilings);
Expand Down
9 changes: 9 additions & 0 deletions core/iwasm/interpreter/wasm_runtime.c
Original file line number Diff line number Diff line change
Expand Up @@ -2512,6 +2512,12 @@ wasm_instantiate(WASMModule *module, WASMModuleInstance *parent,
module_inst->module = module;
module_inst->e =
(WASMModuleInstanceExtra *)((uint8 *)module_inst + extra_info_offset);
#if WASM_ENABLE_THREAD_MGR != 0
if (os_mutex_init(&module_inst->e->common.exception_lock) != 0) {
wasm_runtime_free(module_inst);
return NULL;
}
#endif

#if WASM_ENABLE_MULTI_MODULE != 0
module_inst->e->sub_module_inst_list =
Expand Down Expand Up @@ -3501,6 +3507,9 @@ wasm_deinstantiate(WASMModuleInstance *module_inst, bool is_sub_inst)
bh_bitmap_delete(module_inst->e->common.elem_dropped);
#endif

#if WASM_ENABLE_THREAD_MGR != 0
os_mutex_destroy(&module_inst->e->common.exception_lock);
#endif
wasm_runtime_free(module_inst);
}

Expand Down
3 changes: 3 additions & 0 deletions core/iwasm/interpreter/wasm_runtime.h
Original file line number Diff line number Diff line change
Expand Up @@ -334,6 +334,9 @@ typedef struct WASMModuleInstanceExtraCommon {
/* The gc heap created */
void *gc_heap_handle;
#endif
#if WASM_ENABLE_THREAD_MGR != 0
korp_mutex exception_lock;
#endif
} WASMModuleInstanceExtraCommon;

/* Extra info of WASM module instance for interpreter/jit mode */
Expand Down
17 changes: 2 additions & 15 deletions core/iwasm/libraries/thread-mgr/thread_manager.c
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,6 @@ static bh_list cluster_list_head;
static bh_list *const cluster_list = &cluster_list_head;
static korp_mutex cluster_list_lock;

static korp_mutex _exception_lock;

typedef void (*list_visitor)(void *, void *);

static uint32 cluster_max_thread_num = CLUSTER_MAX_THREAD_NUM;
Expand All @@ -51,10 +49,6 @@ thread_manager_init()
return false;
if (os_mutex_init(&cluster_list_lock) != 0)
return false;
if (os_mutex_init(&_exception_lock) != 0) {
os_mutex_destroy(&cluster_list_lock);
return false;
}
return true;
}

Expand All @@ -69,7 +63,6 @@ thread_manager_destroy()
cluster = next;
}
wasm_cluster_cancel_all_callbacks();
os_mutex_destroy(&_exception_lock);
os_mutex_destroy(&cluster_list_lock);
}

Expand Down Expand Up @@ -1540,19 +1533,13 @@ wasm_cluster_is_thread_terminated(WASMExecEnv *exec_env)
void
exception_lock(WASMModuleInstance *module_inst)
{
/*
* Note: this lock could be per module instance if desirable.
* We can revisit on AOT version bump.
* It probably doesn't matter though because the exception handling
* logic should not be executed too frequently anyway.
*/
os_mutex_lock(&_exception_lock);
os_mutex_lock(&module_inst->e->common.exception_lock);
}

void
exception_unlock(WASMModuleInstance *module_inst)
{
os_mutex_unlock(&_exception_lock);
os_mutex_unlock(&module_inst->e->common.exception_lock);
}

void
Expand Down
Loading