mirror of
https://github.com/bytecodealliance/wasm-micro-runtime.git
synced 2024-10-16 13:02:32 +00:00
Fixing use after free when dumping call stack (#2084)
In multi-threading, this line will eventually call `wasm_cluster_wait_for_all_except_self`: `DEINIT_VEC(store->instances, wasm_instance_vec_delete)` As the threads are joining they can call `wasm_interp_dump_call_stack` which tries to use the module frames but they were already freed by this line: `DEINIT_VEC(store->modules, wasm_module_vec_delete)` This PR swaps the order that these are deleted so module is deleted after the instances. Co-authored-by: Andrew Chambers <ncham@amazon.com>
This commit is contained in:
parent
b0736e2e88
commit
5aa22d41e9
|
@ -687,8 +687,8 @@ wasm_store_delete(wasm_store_t *store)
|
|||
return;
|
||||
}
|
||||
|
||||
DEINIT_VEC(store->modules, wasm_module_vec_delete);
|
||||
DEINIT_VEC(store->instances, wasm_instance_vec_delete);
|
||||
DEINIT_VEC(store->modules, wasm_module_vec_delete);
|
||||
if (store->foreigns) {
|
||||
bh_vector_destroy(store->foreigns);
|
||||
wasm_runtime_free(store->foreigns);
|
||||
|
|
Loading…
Reference in New Issue
Block a user