提交 07d61e4e 编写于 作者: C Caoruihong

fix(asan): fix the deadlock issue of musl dlopen in clang asan runtime

musl的dlopen实现在ld-musl-aarch64-asan.so.1库中,因为这个库是linker,
比asan运行时库libclang_rt.asan.so更早被执行,dlopen中因为使用了动态内存分配,
在asan的hook生效前就已经调用了calloc,等到asan hook生效后再触发了调用realloc,
被asan检测到realloc的内存地址不在asan的动态内存管理范围内从而触发报告asan错误日志,
而asan报告错误日志时正好又需要调用到dl相关函数(dl_iterate_phdr)进行函数栈回溯,
进而导致死锁。
本PR中的修改方法是将linker中使用的内存操作函数进行本地绑定,不让asan运行时库接管,
进而避免此问题场景的出现,本修改仅影响asan版本,正常版本不受影响。
Signed-off-by: NCaoruihong <crh.cao@huawei.com>
Change-Id: I499228c658e23ee47c51e18a91cb4b9cbec57722
上级 48b46e8c
......@@ -196,6 +196,10 @@ template("musl_libs") {
"-Wl,--exclude-libs=ALL",
"-Wl,--dynamic-list=${dynamic_list}",
]
if (is_asan) {
ldflags -= [ "-Wl,--dynamic-list=${dynamic_list}" ]
ldflags += [ "-Wl,-Bsymbolic-functions" ]
}
asmflags = cflags
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册