• C
    fix(asan): fix the deadlock issue of musl dlopen in clang asan runtime · 07d61e4e
    Caoruihong 提交于
    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
    07d61e4e
musl_template.gni 14.2 KB