You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AddressSanitizer运行时触发CHECK断言错误,初始化失败求助

AddressSanitizer运行时触发CHECK断言错误,初始化失败求助

看起来你遇到的是LLVM-MinGW环境下AddressSanitizer初始化时的底层拦截问题,这个错误通常是因为ASan的动态链接库加载异常,或者链接器参数破坏了ASan依赖的CRT初始化流程。我来帮你梳理几个可行的解决方向:

  1. 移除自定义入口点参数,恢复CRT默认初始化
    你在链接参数里手动指定了--entry=mainCRTStartup,这会跳过CRT的完整初始化流程——而ASan恰恰需要依赖CRT的早期初始化,来完成memcpy这类内存函数的挂钩工作。把这两行参数从任务配置里删掉:
// 从args数组中移除以下两行
"-Xlinker", "--entry=mainCRTStartup",

手动指定入口点会打乱ASan的初始化顺序,导致它还没拿到memcpy的真实函数指针就尝试调用,直接触发CHECK断言。

  1. 确保ASan库与LLVM版本严格匹配
    你提到LLVM版本是20.1.8,但ASan库版本是20.1.0,版本不兼容很容易引发初始化故障。请直接从C:\llvm-mingw\lib\clang\20.1.8\lib\windows目录下,复制对应架构的libclang_rt.asan_dynamic-x86_64.dll到你的可执行文件目录,替换掉旧版本的库文件。

  2. 简化编译参数,逐步排查干扰项
    先使用最基础的ASan编译命令测试,排除其他参数的影响:

C:\llvm-mingw\bin\clang++.exe -g -fsanitize=address test.cpp -o test.exe

如果这个基础命令能正常输出ASan test OK,再逐步添加你需要的参数(比如-fcolor-diagnostics、--subsystem=console),找到哪个参数和ASan的初始化冲突。

  1. 重启VS Code让环境变量生效
    你已经把C:\llvm-mingw\bin加入环境变量,但修改后需要完全重启VS Code,让它的终端进程读取新的环境变量。否则VS Code的任务可能还是用的旧环境,导致ASan无法正确加载依赖库。

另外,你可以尝试直接在系统CMD或PowerShell里编译运行,而不是通过VS Code的任务——如果终端里能正常运行,那问题大概率出在VS Code任务的环境配置上。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.07 11:59:35