Closed
[Bug-Report|缺陷反馈]:使用bash build.sh -u --asan --opgraph是存在编译失败 #6035
lixiaweiAdd on  27 days agoClosed at  27 days ago
lixiaweiCollaborators
27 days ago Create

Describe the current behavior / 问题描述 (Mandatory / 必填)

使用bash build.sh -u --asan --opgraph是存在编译失败

Environment Information / 环境信息 (Mandatory / 必填)

910b

Steps to reproduce the issue / 重现步骤 (Mandatory / 必填)

使用bash build.sh -u --asan --opgraph是存在编译失败

Describe the expected behavior / 预期结果 (Mandatory / 必填)

执行成功

/usr/bin/ld: ../../../../gmm/grouped_matmul/tests/ut/op_graph/libtransformer_op_graph_ut_cases.a(test_grouped_matmul_transpose_fusion_pass.cpp.o): in function ops::GroupedMatmulTransFusionPass::~GroupedMatmulTransFusionPass()': /mnt/workspace/lwx1073972/build_fix/ops-transformer/gmm/grouped_matmul/tests/ut/op_graph/../../../op_graph/fusion_pass/grouped_matmul_transpose_fusion_pass.h:23:(.text._ZN3ops28GroupedMatmulTransFusionPassD2Ev[_ZN3ops28GroupedMatmulTransFusionPassD5Ev]+0x28): undefined reference to vtable for ops::GroupedMatmulTransFusionPass'
/usr/bin/ld: /mnt/workspace/lwx1073972/build_fix/ops-transformer/gmm/grouped_matmul/tests/ut/op_graph/../../../op_graph/fusion_pass/grouped_matmul_transpose_fusion_pass.h:23:(.text._ZN3ops28GroupedMatmulTransFusionPassD2Ev[_ZN3ops28GroupedMatmulTransFusionPassD5Ev]+0x2c): undefined reference to vtable for ops::GroupedMatmulTransFusionPass' /usr/bin/ld: ../../../../gmm/grouped_matmul/tests/ut/op_graph/libtransformer_op_graph_ut_cases.a(test_grouped_matmul_transpose_fusion_pass.cpp.o):(.data.rel.ro+0xc8): undefined reference to ops::GroupedMatmulTransFusionPass::Run(std::shared_ptrge::Graph&, ge::CustomPassContext&)'
/usr/bin/ld: ../../../../gmm/grouped_matmul/tests/ut/op_graph/libtransformer_op_graph_ut_cases.a(test_grouped_matmul_transpose_fusion_pass.cpp.o)😦.data.rel.ro+0x188): undefined reference to typeinfo for ops::GroupedMatmulTransFusionPass' /usr/bin/ld: ../../../../gmm/grouped_matmul/tests/ut/op_graph/libtransformer_op_graph_ut_cases.a(test_apply_rotary_pos_emb_tensor_move_fusion_pass.cpp.o): in function ops::ApplyRotaryPosEmbTensorMoveFusionPass::~ApplyRotaryPosEmbTensorMoveFusionPass()':
/mnt/workspace/lwx1073972/build_fix/ops-transformer/posembedding/apply_rotary_pos_emb/tests/ut/op_graph/../../../op_graph/fusion_pass/apply_rotary_pos_emb_tensor_move_fusion_pass.h:29:(.text._ZN3ops37ApplyRotaryPosEmbTensorMoveFusionPassD2Ev[_ZN3ops37ApplyRotaryPosEmbTensorMoveFusionPassD5Ev]+0x28): undefined reference to vtable for ops::ApplyRotaryPosEmbTensorMoveFusionPass' /usr/bin/ld: /mnt/workspace/lwx1073972/build_fix/ops-transformer/posembedding/apply_rotary_pos_emb/tests/ut/op_graph/../../../op_graph/fusion_pass/apply_rotary_pos_emb_tensor_move_fusion_pass.h:29:(.text._ZN3ops37ApplyRotaryPosEmbTensorMoveFusionPassD2Ev[_ZN3ops37ApplyRotaryPosEmbTensorMoveFusionPassD5Ev]+0x2c): undefined reference to vtable for ops::ApplyRotaryPosEmbTensorMoveFusionPass'
/usr/bin/ld: ../../../../gmm/grouped_matmul/tests/ut/op_graph/libtransformer_op_graph_ut_cases.a(test_apply_rotary_pos_emb_tensor_move_fusion_pass.cpp.o)😦.data.rel.ro+0x10): undefined reference to ops::ApplyRotaryPosEmbTensorMoveFusionPass::Run(std::shared_ptr<ge::Graph>&, ge::CustomPassContext&)' /usr/bin/ld: ../../../../gmm/grouped_matmul/tests/ut/op_graph/libtransformer_op_graph_ut_cases.a(test_apply_rotary_pos_emb_tensor_move_fusion_pass.cpp.o):(.data.rel.ro+0x38): undefined reference to typeinfo for ops::ApplyRotaryPosEmbTensorMoveFusionPass'
/usr/bin/ld: ../../../../gmm/grouped_matmul/tests/ut/op_graph/libtransformer_op_graph_ut_cases.a(test_interleave_rope_fusion_pass.cpp.o): in function InterleaveRopeFusionPassTest_patternCreateSuccess_Test::TestBody()': /mnt/workspace/lwx1073972/build_fix/ops-transformer/posembedding/interleave_rope/tests/ut/op_graph/test_interleave_rope_fusion_pass.cpp:156:(.text+0x410c): undefined reference to ops::InterleaveRope2RotaryPositionEmbeddingFusionPass::Patterns()'
/usr/bin/ld: ../../../../gmm/grouped_matmul/tests/ut/op_graph/libtransformer_op_graph_ut_cases.a(test_interleave_rope_fusion_pass.cpp.o): in function ops::InterleaveRope2RotaryPositionEmbeddingFusionPass::InterleaveRope2RotaryPositionEmbeddingFusionPass()': /mnt/workspace/lwx1073972/build_fix/ops-transformer/posembedding/interleave_rope/tests/ut/op_graph/../../../op_graph/fusion_pass/interleave_rope_fusion_pass.h:28:(.text._ZN3ops48InterleaveRope2RotaryPositionEmbeddingFusionPassC2Ev[_ZN3ops48InterleaveRope2RotaryPositionEmbeddingFusionPassC5Ev]+0x4c): undefined reference to vtable for ops::InterleaveRope2RotaryPositionEmbeddingFusionPass'
/usr/bin/ld: /mnt/workspace/lwx1073972/build_fix/ops-transformer/posembedding/interleave_rope/tests/ut/op_graph/../../../op_graph/fusion_pass/interleave_rope_fusion_pass.h:28:(.text._ZN3ops48InterleaveRope2RotaryPositionEmbeddingFusionPassC2Ev[_ZN3ops48InterleaveRope2RotaryPositionEmbeddingFusionPassC5Ev]+0x50): undefined reference to vtable for ops::InterleaveRope2RotaryPositionEmbeddingFusionPass' /usr/bin/ld: ../../../../gmm/grouped_matmul/tests/ut/op_graph/libtransformer_op_graph_ut_cases.a(test_interleave_rope_fusion_pass.cpp.o): in function ops::InterleaveRope2RotaryPositionEmbeddingFusionPass::~InterleaveRope2RotaryPositionEmbeddingFusionPass()':
/mnt/workspace/lwx1073972/build_fix/ops-transformer/posembedding/interleave_rope/tests/ut/op_graph/../../../op_graph/fusion_pass/interleave_rope_fusion_pass.h:28:(.text._ZN3ops48InterleaveRope2RotaryPositionEmbeddingFusionPassD2Ev[_ZN3ops48InterleaveRope2RotaryPositionEmbeddingFusionPassD5Ev]+0x28): undefined reference to vtable for ops::InterleaveRope2RotaryPositionEmbeddingFusionPass' /usr/bin/ld: /mnt/workspace/lwx1073972/build_fix/ops-transformer/posembedding/interleave_rope/tests/ut/op_graph/../../../op_graph/fusion_pass/interleave_rope_fusion_pass.h:28:(.text._ZN3ops48InterleaveRope2RotaryPositionEmbeddingFusionPassD2Ev[_ZN3ops48InterleaveRope2RotaryPositionEmbeddingFusionPassD5Ev]+0x2c): undefined reference to vtable for ops::InterleaveRope2RotaryPositionEmbeddingFusionPass'
/usr/bin/ld: ../../../../gmm/grouped_matmul/tests/ut/op_graph/libtransformer_op_graph_ut_cases.a(test_rotary_position_embedding_fusion_pass.cpp.o): in function RotaryPositionEmbeddingFusionPassTest_patternCreateSuccess_Test::TestBody()': /mnt/workspace/lwx1073972/build_fix/ops-transformer/posembedding/rotary_position_embedding/tests/ut/op_graph/test_rotary_position_embedding_fusion_pass.cpp:156:(.text+0x410c): undefined reference to ops::RotaryMul2RotaryPositionEmbeddingFusionPass::Patterns()'
/usr/bin/ld: ../../../../gmm/grouped_matmul/tests/ut/op_graph/libtransformer_op_graph_ut_cases.a(test_rotary_position_embedding_fusion_pass.cpp.o): in function ops::RotaryMul2RotaryPositionEmbeddingFusionPass::RotaryMul2RotaryPositionEmbeddingFusionPass()': /mnt/workspace/lwx1073972/build_fix/ops-transformer/posembedding/rotary_position_embedding/tests/ut/op_graph/../../../op_graph/fusion_pass/rotary_position_embedding_fusion_pass.h:28:(.text._ZN3ops43RotaryMul2RotaryPositionEmbeddingFusionPassC2Ev[_ZN3ops43RotaryMul2RotaryPositionEmbeddingFusionPassC5Ev]+0x4c): undefined reference to vtable for ops::RotaryMul2RotaryPositionEmbeddingFusionPass'
/usr/bin/ld: /mnt/workspace/lwx1073972/build_fix/ops-transformer/posembedding/rotary_position_embedding/tests/ut/op_graph/../../../op_graph/fusion_pass/rotary_position_embedding_fusion_pass.h:28:(.text._ZN3ops43RotaryMul2RotaryPositionEmbeddingFusionPassC2Ev[_ZN3ops43RotaryMul2RotaryPositionEmbeddingFusionPassC5Ev]+0x50): undefined reference to vtable for ops::RotaryMul2RotaryPositionEmbeddingFusionPass' /usr/bin/ld: ../../../../gmm/grouped_matmul/tests/ut/op_graph/libtransformer_op_graph_ut_cases.a(test_rotary_position_embedding_fusion_pass.cpp.o): in function ops::RotaryMul2RotaryPositionEmbeddingFusionPass::~RotaryMul2RotaryPositionEmbeddingFusionPass()':
/mnt/workspace/lwx1073972/build_fix/ops-transformer/posembedding/rotary_position_embedding/tests/ut/op_graph/../../../op_graph/fusion_pass/rotary_position_embedding_fusion_pass.h:28:(.text._ZN3ops43RotaryMul2RotaryPositionEmbeddingFusionPassD2Ev[_ZN3ops43RotaryMul2RotaryPositionEmbeddingFusionPassD5Ev]+0x28): undefined reference to vtable for ops::RotaryMul2RotaryPositionEmbeddingFusionPass' /usr/bin/ld: /mnt/workspace/lwx1073972/build_fix/ops-transformer/posembedding/rotary_position_embedding/tests/ut/op_graph/../../../op_graph/fusion_pass/rotary_position_embedding_fusion_pass.h:28:(.text._ZN3ops43RotaryMul2RotaryPositionEmbeddingFusionPassD2Ev[_ZN3ops43RotaryMul2RotaryPositionEmbeddingFusionPassD5Ev]+0x2c): undefined reference to vtable for ops::RotaryMul2RotaryPositionEmbeddingFusionPass'
/usr/bin/ld: ../../../../gmm/grouped_matmul/tests/ut/op_graph/libtransformer_op_graph_ut_cases.a(test_rotary_position_embedding_grad_fusion_pass.cpp.o): in function RotaryPositionEmbeddingGradFusionPassTest_patternCreateSuccess_Test::TestBody()': /mnt/workspace/lwx1073972/build_fix/ops-transformer/posembedding/rotary_position_embedding_grad/tests/ut/op_graph/test_rotary_position_embedding_grad_fusion_pass.cpp:170:(.text+0x5114): undefined reference to ops::RotaryMulGrad2RotaryPositionEmbeddingGradFusionPass::Patterns()'
/usr/bin/ld: ../../../../gmm/grouped_matmul/tests/ut/op_graph/libtransformer_op_graph_ut_cases.a(test_rotary_position_embedding_grad_fusion_pass.cpp.o): in function ops::RotaryMulGrad2RotaryPositionEmbeddingGradFusionPass::RotaryMulGrad2RotaryPositionEmbeddingGradFusionPass()': /mnt/workspace/lwx1073972/build_fix/ops-transformer/posembedding/rotary_position_embedding_grad/tests/ut/op_graph/../../../op_graph/fusion_pass/rotary_position_embedding_grad_fusion_pass.h:28:(.text._ZN3ops51RotaryMulGrad2RotaryPositionEmbeddingGradFusionPassC2Ev[_ZN3ops51RotaryMulGrad2RotaryPositionEmbeddingGradFusionPassC5Ev]+0x4c): undefined reference to vtable for ops::RotaryMulGrad2RotaryPositionEmbeddingGradFusionPass'
/usr/bin/ld: /mnt/workspace/lwx1073972/build_fix/ops-transformer/posembedding/rotary_position_embedding_grad/tests/ut/op_graph/../../../op_graph/fusion_pass/rotary_position_embedding_grad_fusion_pass.h:28:(.text._ZN3ops51RotaryMulGrad2RotaryPositionEmbeddingGradFusionPassC2Ev[_ZN3ops51RotaryMulGrad2RotaryPositionEmbeddingGradFusionPassC5Ev]+0x50): undefined reference to vtable for ops::RotaryMulGrad2RotaryPositionEmbeddingGradFusionPass' /usr/bin/ld: ../../../../gmm/grouped_matmul/tests/ut/op_graph/libtransformer_op_graph_ut_cases.a(test_rotary_position_embedding_grad_fusion_pass.cpp.o): in function ops::RotaryMulGrad2RotaryPositionEmbeddingGradFusionPass::~RotaryMulGrad2RotaryPositionEmbeddingGradFusionPass()':
/mnt/workspace/lwx1073972/build_fix/ops-transformer/posembedding/rotary_position_embedding_grad/tests/ut/op_graph/../../../op_graph/fusion_pass/rotary_position_embedding_grad_fusion_pass.h:28:(.text._ZN3ops51RotaryMulGrad2RotaryPositionEmbeddingGradFusionPassD2Ev[_ZN3ops51RotaryMulGrad2RotaryPositionEmbeddingGradFusionPassD5Ev]+0x28): undefined reference to vtable for ops::RotaryMulGrad2RotaryPositionEmbeddingGradFusionPass' /usr/bin/ld: /mnt/workspace/lwx1073972/build_fix/ops-transformer/posembedding/rotary_position_embedding_grad/tests/ut/op_graph/../../../op_graph/fusion_pass/rotary_position_embedding_grad_fusion_pass.h:28:(.text._ZN3ops51RotaryMulGrad2RotaryPositionEmbeddingGradFusionPassD2Ev[_ZN3ops51RotaryMulGrad2RotaryPositionEmbeddingGradFusionPassD5Ev]+0x2c): undefined reference to vtable for ops::RotaryMulGrad2RotaryPositionEmbeddingGradFusionPass'
collect2: error: ld returned 1 exit status
gmake[3]: *** [tests/ut/framework_normal/op_graph/CMakeFiles/transformer_op_graph_ut.dir/build.make:123: tests/ut/framework_normal/op_graph/transformer_op_graph_ut] Error 1
gmake[2]: *** [CMakeFiles/Makefile2:24944: tests/ut/framework_normal/op_graph/CMakeFiles/transformer_op_graph_ut.dir/all] Error 2
gmake[1]: *** [CMakeFiles/Makefile2:24951: tests/ut/framework_normal/op_graph/CMakeFiles/transformer_op_graph_ut.dir/rule] Error 2
gmake: *** [Makefile:1340: transformer_op_graph_ut] Error 2
[2026-10-13 10:07:34] [ERROR] Build failed for target: transformer_op_graph_ut.

Special notes for this issue/备注 (Optional / 选填)

likedislike
LlixiaweiCollaborators
27 days ago Added label: bug-report
LlixiaweiCollaborators
27 days ago Assign lixiawei as responsible person
周云飞
周云飞Collaborators
27 days ago Comments:

您好,感谢反馈!

问题分析

从您提供的日志看,在 910B 环境执行 bash build.sh -u --asan --opgraph 时,失败发生在 transformer_op_graph_ut 的链接阶段,而不是单测运行阶段。测试对象文件已进入静态库,但链接器无法解析多个融合 Pass 的 Run()、Patterns() 以及虚表、类型信息符号,涉及 GroupedMatmul、ApplyRotaryPosEmb、InterleaveRope 和 RotaryPositionEmbedding 正向、反向相关测试。

依据已读取的 cann/ops-transformer@95d27a7590291c6a116bd5833d6e4daa5c074fe9 代码片段,GroupedMatmul 的声明和 InterleaveRope 的声明均受 CANN_VERSION_NUM >= 90000000 条件控制,并声明了日志中缺失的虚函数。结合报错,初步排查方向是:测试侧引用了这些类,但对应实现未参与构建,或提供实现的库未被最终链接正确纳入。虚表、类型信息报错可能随虚函数实现缺失一并出现,不能仅据此判定为 RTTI 配置问题。

目前证据尚不足以确定具体构建配置根因,也不能判断问题是否由 --asan 特有配置触发,或仅影响 910B。

处理方向

一个可行的处理方向是核对 op_graph 单测目标的实现源文件收集、版本条件和链接依赖:若实现被遗漏,可考虑补齐源文件或依赖库;若测试与实现使用了不同的启用条件,则需要协调两侧条件,同时保留不支持版本下的兼容行为。具体调整位置仍需结合构建配置确认。

为对齐您使用的版本并进一步区分上述情况,请补充仓库提交号、实际使用的 CANN 与编译器版本,以及失败目标的完整链接命令(可开启详细构建输出获取,请隐去个人路径及敏感信息)。这些信息有助于确认版本条件和链接输入是否一致。

likedislike
CANN-robotCANN-robotCollaborators
27 days ago Close issue
CANN-robotCANN-robotCollaborators
27 days ago Added label: resolved