From 660ff83bc221482bb608eae3da8d8f88c39fd5cd Mon Sep 17 00:00:00 2001 From: zhengkaijie <2658880633@qq.com> Date: Tue, 6 Dec 2022 10:22:29 +0800 Subject: [PATCH] 2 Signed-off-by: zhengkaijie <2658880633@qq.com> --- porting/linux/user/src/hook/musl_preinit.c | 10 ++++++---- porting/linux/user/src/hook/musl_preinit_common.h | 2 +- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/porting/linux/user/src/hook/musl_preinit.c b/porting/linux/user/src/hook/musl_preinit.c index 052eefb7..c845d0a7 100644 --- a/porting/linux/user/src/hook/musl_preinit.c +++ b/porting/linux/user/src/hook/musl_preinit.c @@ -69,7 +69,7 @@ static void get_native_hook_param(char *buf, unsigned int buf_len) #ifdef OHOS_ENABLE_PARAMETER const char *key = MUSL_HOOK_PARAM_NAME; unsigned int len = buf_len; - (void)SystemReadParam(kMemTrackPropertyEnable, __memleak_param_value, &len); + (void)SystemReadParam(key, buf, &len); #else return; #endif @@ -376,7 +376,8 @@ bool finish_install_ohos_malloc_hooks(struct musl_libc_globals* globals, const c } atomic_store_explicit(&__musl_libc_globals.so_dispatch_table, (volatile long long)&globals->malloc_dispatch_table, memory_order_seq_cst); atomic_store_explicit(&__musl_libc_globals.current_dispatch_table, (volatile long long)&globals->malloc_dispatch_table, memory_order_seq_cst); - } else if (__get_memleak_hook_flag() && checkLoadMallocMemTrack) { + } + if (__get_memleak_hook_flag() && checkLoadMallocMemTrack) { if (!start_func(memLeakTypeContent)) { clear_function_table(); return false; @@ -437,7 +438,7 @@ static void* init_ohos_malloc_hook() install_ohos_malloc_hook(&__musl_libc_globals, kMemTrackSharedLib, kMemTrackPrefix); } } - if (__get_global_hook_flag()) + if (__get_global_hook_flag()) { install_ohos_malloc_hook(&__musl_libc_globals, __malloc_hook_shared_lib, __malloc_hook_function_prefix); } return NULL; @@ -554,7 +555,8 @@ static void __install_memleak_tracker_hook(int32_t sigNum, siginfo_t *info, void atomic_store_explicit(&__musl_libc_globals.current_dispatch_table, (volatile long long)memleak_tracker_so_dispatch_value, memory_order_seq_cst); } if (start_func && !start_func(memLeakTypeContent)) { - // __musl_log(__MUSL_LOG_ERROR, "%s: failed to enable malloc\n", getprogname()); + // __musl_log(__MUSL_LOG_ERROR, "%s: failed to enable malloc\n", getprogname()); + clear_function_table(); } if (memLeakTypeContent & ADDR_NATIVE_ENABLE) { atomic_store_explicit(&__memleak_hook_flag, (volatile bool)false, memory_order_seq_cst); diff --git a/porting/linux/user/src/hook/musl_preinit_common.h b/porting/linux/user/src/hook/musl_preinit_common.h index c0e324df..6666c97e 100644 --- a/porting/linux/user/src/hook/musl_preinit_common.h +++ b/porting/linux/user/src/hook/musl_preinit_common.h @@ -109,7 +109,7 @@ inline volatile const struct MallocDispatchType* get_current_dispatch_table() #ifdef HOOK_ENABLE volatile const struct MallocDispatchType* ret = (struct MallocDispatchType *)atomic_load_explicit(&__musl_libc_globals.current_dispatch_table, memory_order_acquire); if (ret != NULL) { - if (checkLoadMallocMemTrack) { + if (__get_memleak_hook_flag()) { return ret; } if (!__get_global_hook_flag()) { -- GitLab