Skip to content

fix(coost): disable syscall hooks in test build to fix gcov crash - #772

Merged
deepin-bot[bot] merged 1 commit into
linuxdeepin:masterfrom
pengfeixx:fix/coost-hook-gcov-crash
Jul 16, 2026
Merged

fix(coost): disable syscall hooks in test build to fix gcov crash#772
deepin-bot[bot] merged 1 commit into
linuxdeepin:masterfrom
pengfeixx:fix/coost-hook-gcov-crash

Conversation

@pengfeixx

Copy link
Copy Markdown
Contributor

coost interposes open/fcntl/close; gcov flush at exit calls these, hitting a half-destroyed co::MemBlocks allocator -> SIGSEGV in 3 test binaries, leaving corrupt .gcda that aborts lcov mid-run and drops coverage to ~39%.

coost 通过符号介入拦截 open/fcntl/close 等;进程退出时 gcov 落盘调用
这些 syscall,触发已半析构的 co::MemBlocks 分配器,导致 3 个测试二进制
SIGSEGV,并留下损坏的 .gcda 使 lcov 中途中止、覆盖率跌至 ~39%。

  • compat.cmake: 测试构建(DOTEST/BUILD_TESTS)前置 DISABLE_HOOK ON
  • hook.h: _CO_DISABLE_HOOK 分支补齐 POSIX 头文件,否则 sock.cc 编译失败

Log: 修复测试退出阶段 coost hook 导致的段错误
Influence: 修复 commonstruct/zrpc/daemon 测试二进制退出段错误;单元测试 覆盖率从 ~39% 恢复至 ~80%;仅影响测试构建,生产构建行为不变。

coost interposes open/fcntl/close; gcov flush at exit calls these,
hitting a half-destroyed co::MemBlocks allocator -> SIGSEGV in 3 test
binaries, leaving corrupt .gcda that aborts lcov mid-run and drops
coverage to ~39%.

coost 通过符号介入拦截 open/fcntl/close 等;进程退出时 gcov 落盘调用
这些 syscall,触发已半析构的 co::MemBlocks 分配器,导致 3 个测试二进制
SIGSEGV,并留下损坏的 .gcda 使 lcov 中途中止、覆盖率跌至 ~39%。

- compat.cmake: 测试构建(DOTEST/BUILD_TESTS)前置 DISABLE_HOOK ON
- hook.h: _CO_DISABLE_HOOK 分支补齐 POSIX 头文件,否则 sock.cc 编译失败

Log: 修复测试退出阶段 coost hook 导致的段错误
Influence: 修复 commonstruct/zrpc/daemon 测试二进制退出段错误;单元测试
覆盖率从 ~39% 恢复至 ~80%;仅影响测试构建,生产构建行为不变。

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry @pengfeixx, you have reached your weekly rate limit of 500000 diff characters.

Please try again later or upgrade to continue using Sourcery

@deepin-ci-robot

Copy link
Copy Markdown

deepin pr auto review

★ 总体评分:100分

■ 【总体评价】

代码通过条件编译和构建配置修复了进程退出时 gcov 落盘导致的 SIGSEGV 崩溃问题
逻辑清晰且注释详尽,无安全漏洞,代码质量优秀

■ 【详细分析】

  • 1.语法逻辑(完全正确)✓

compat.cmake 中的 if(DOTEST OR BUILD_TESTS) 条件判断准确,且置于 add_subdirectory 之前以确保覆盖默认值;hook.h 中在 _CO_DISABLE_HOOK 宏定义后补充了系统头文件的包含,条件编译逻辑无误,有效避免了关闭 hook 后的编译失败问题
潜在问题:无
建议:无需修改

  • 2.代码质量(优秀)✓

代码注释非常详尽,清晰解释了 SIGSEGV 的触发原因(gcov 落盘与 co::gHook() 惰性分配冲突)以及修复原理,hook.h 中也说明了补充头文件的原因,具有极高的可维护性
潜在问题:无
建议:无需修改

  • 3.代码性能(无性能问题)✓

在测试构建中关闭 coost 的系统调用 hook,使得相关调用直接走 libc,避免了不必要的 hook 介入和惰性分配开销,对测试环境性能有正面影响
潜在问题:无
建议:无需修改

  • 4.代码安全(存在0个安全漏洞)✓

漏洞对比统计:新增漏洞 0 个,减少漏洞 0 个,持平 0 个
本次修改仅涉及构建配置的条件判断和 C++ 头文件的包含,不存在外部输入处理,无攻击面

  • 建议:无需修改

■ 【改进建议代码示例】

// 代码已足够完善,无需修改

@deepin-ci-robot

Copy link
Copy Markdown

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: lzwind, pengfeixx

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@pengfeixx

Copy link
Copy Markdown
Contributor Author

/forcemerge

@deepin-bot

deepin-bot Bot commented Jul 16, 2026

Copy link
Copy Markdown

This pr force merged! (status: unstable)

@deepin-bot
deepin-bot Bot merged commit 2ad460e into linuxdeepin:master Jul 16, 2026
20 of 22 checks passed
@pengfeixx
pengfeixx deleted the fix/coost-hook-gcov-crash branch July 16, 2026 05:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants