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

gtest_discover_tests报进程超时 如何修复Mac端GitHub CI流水线故障?

故障根因

该报错触发在CMake的gtest_discover_tests测试用例自动发现阶段,Mac runner执行该步骤时超时。Linux运行正常、Mac失败的常见原因如下:

  • gtest_discover_tests默认的测试发现超时时间仅为5秒,GitHub提供的Mac runner资源调度、IO性能普遍弱于Linux runner,很容易触发超时阈值
  • 你的配置中显式链接了pthread库,Mac系统的pthread为内置系统库,无需显式链接,多余配置可能导致可执行文件启动时依赖加载异常
  • 构建阶段执行测试发现时,Mac环境的自定义动态库(如你引入的libwebp)路径未配置,导致可执行文件启动卡住
修复方案

按优先级依次尝试以下修改:

1. 延长测试发现超时时间

修改测试目录CMakeLists.txt末尾的gtest_discover_tests配置,新增超时参数:

gtest_discover_tests(splitwebp_tests
    DISCOVERY_TIMEOUT 60
)

将超时阈值调整为60秒,覆盖慢runner的执行耗时。

2. 移除Mac下多余的pthread链接

修改链接配置,仅在Linux环境链接pthread:

# 原配置:target_link_libraries(splitwebp_tests webp webpdemux pthread)
# 替换为:
target_link_libraries(splitwebp_tests webp webpdemux)
if(UNIX AND NOT APPLE)
    target_link_libraries(splitwebp_tests pthread)
endif()

3. 切换测试发现模式(可选,前两步无效时使用)

CMake 3.18及以上版本支持将测试发现时机从构建阶段调整为测试执行前,避免构建阶段卡流程:

gtest_discover_tests(splitwebp_tests
    DISCOVERY_TIMEOUT 60
    DISCOVERY_MODE PRE_TEST
)

4. 配置Mac动态库路径(可选,自定义依赖为动态库时使用)

如果你的3rdparty下的libwebp为动态编译版本,在GitHub CI的Mac任务执行测试前,新增动态库路径配置:

- name: Execute unit tests on Mac
  run: |
    export DYLD_LIBRARY_PATH=${GITHUB_WORKSPACE}/3rdparty/libwebp/lib:${DYLD_LIBRARY_PATH}
    ctest -C Release --output-on-failure

内容的提问来源于stack exchange,提问作者Rajdeep Roy Chowdhury

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 06:30:02