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
Showing
想要评论请 注册 或 登录