From c8fe1004aab482c8e5c2061a45079540e6ff5d08 Mon Sep 17 00:00:00 2001 From: Huang Qi Date: Fri, 3 Dec 2021 17:00:18 +0800 Subject: [PATCH] Don't throw exception while module_malloc failed (#860) Don't throw exception when module_malloc memory failed: - Exception will terminate the wasm app, it's not necessary since app can check the result of dynamic allocation and do some cleanup or fallback operation on failure instead of 'crash' directly. - In acquire_wait_info, call hasn_map_find only when the address isn't NULL, or there are many senseless error logs --- core/iwasm/aot/aot_runtime.c | 2 +- core/iwasm/common/wasm_shared_memory.c | 3 ++- core/iwasm/interpreter/wasm_runtime.c | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/core/iwasm/aot/aot_runtime.c b/core/iwasm/aot/aot_runtime.c index b97e9528..c769a527 100644 --- a/core/iwasm/aot/aot_runtime.c +++ b/core/iwasm/aot/aot_runtime.c @@ -1774,7 +1774,7 @@ aot_module_malloc(AOTModuleInstance *module_inst, uint32 size, aot_set_exception(module_inst, "app heap corrupted"); } else { - aot_set_exception(module_inst, "out of memory"); + LOG_WARNING("warning: allocate %u bytes memory failed", size); } return 0; } diff --git a/core/iwasm/common/wasm_shared_memory.c b/core/iwasm/common/wasm_shared_memory.c index 65c98d4e..6fc9bf20 100644 --- a/core/iwasm/common/wasm_shared_memory.c +++ b/core/iwasm/common/wasm_shared_memory.c @@ -224,7 +224,8 @@ acquire_wait_info(void *address, bool create) AtomicWaitInfo *wait_info = NULL; bh_list_status ret; - wait_info = (AtomicWaitInfo *)bh_hash_map_find(wait_map, address); + if (address) + wait_info = (AtomicWaitInfo *)bh_hash_map_find(wait_map, address); if (!create) return wait_info; diff --git a/core/iwasm/interpreter/wasm_runtime.c b/core/iwasm/interpreter/wasm_runtime.c index 14a42864..76b4184b 100644 --- a/core/iwasm/interpreter/wasm_runtime.c +++ b/core/iwasm/interpreter/wasm_runtime.c @@ -1830,7 +1830,7 @@ wasm_module_malloc(WASMModuleInstance *module_inst, uint32 size, wasm_set_exception(module_inst, "app heap corrupted"); } else { - wasm_set_exception(module_inst, "out of memory"); + LOG_WARNING("warning: allocate %u bytes memory failed", size); } return 0; }