2603版本构建失败

背景
要在3095的板子上烧录固件包,在打包时出现问题 报 执行失败, 与任务状态服务器通信失败

执行的命令是 LOG=DEBUG bingo build -b openUBMC_1712_oee --os_type openeuler -pr profile.openeuler.ini --debug_platform_path /data
完整task日志看附件

终端堆栈信息是

[2026-08-05 10:21:28,989 INFO] task_build_conan.py:1080 >> rm -rf /home/workspace/source/manifest/temp/build_openUBMC_1712_oee_debug_dev/tmp_root/etc/package_info
[2026-08-05 10:21:29,009 INFO] task_build_conan.py:1082 >> cp -f /home/workspace/source/manifest/temp/build_openUBMC_1712_oee_debug_dev/tmp_root/package_info /home/workspace/source/manifest/temp/build_openUBMC_1712_oee_debug_dev/tmp_root/etc/package_info
[2026-08-05 10:21:29,101 INFO] task_build_conan.py:1109 >> rm -rf /home/workspace/source/manifest/temp/build_openUBMC_1712_oee_debug_dev/tmp_root/etc/package_graph
[2026-08-05 10:21:29,121 INFO] task_build_conan.py:1111 >> cp -f /home/workspace/source/manifest/temp/build_openUBMC_1712_oee_debug_dev/graph_data.json /home/workspace/source/manifest/temp/build_openUBMC_1712_oee_debug_dev/tmp_root/etc/package_graph
[2026-08-05 10:21:29,141 INFO] task_build_conan.py:1114 >> rm -rf opt/bmc/trust/sensitive_data.json
[2026-08-05 10:21:29,181 INFO] task_build_conan.py:1132 >> mkdir -p opt/bmc/trust
[2026-08-05 10:21:29,200 INFO] task_build_conan.py:1133 >> cp -df /home/workspace/source/manifest/temp/build_openUBMC_1712_oee_debug_dev/tmp_root/sensitive_data.json opt/bmc/trust/sensitive_data.json
[2026-08-05 10:21:29,220 INFO] task_build_conan.py:1134 >> rm -rf /home/workspace/source/manifest/temp/build_openUBMC_1712_oee_debug_dev/tmp_root/sensitive_data.json
[2026-08-05 10:21:29,239 INFO] worker.py:267 任务 work.build.conan 完成
[2026-08-05 10:21:29,240 ERROR] worker.py:271 任务 work.build.conan 执行失败, 与任务状态服务器通信失败
[2026-08-05 10:21:29,245 INFO] worker.py:194 Traceback (most recent call last):
  File "/usr/local/lib/python3.12/dist-packages/bmcgo/worker.py", line 107, in set
    self._dict[key] = status
    ~~~~~~~~~~^^^^^
  File "<string>", line 2, in __setitem__
  File "/usr/lib/python3.12/multiprocessing/managers.py", line 820, in _callmethod
    conn.send((self._id, methodname, args, kwds))
  File "/usr/lib/python3.12/multiprocessing/connection.py", line 206, in send
    self._send_bytes(_ForkingPickler.dumps(obj))
  File "/usr/lib/python3.12/multiprocessing/connection.py", line 427, in _send_bytes
    self._send(header + buf)
  File "/usr/lib/python3.12/multiprocessing/connection.py", line 384, in _send
    n = write(self._handle, buf)
        ^^^^^^^^^^^^^^^^^^^^^^^^
BrokenPipeError: [Errno 32] Broken pipe

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/local/lib/python3.12/dist-packages/bmcgo/worker.py", line 268, in _run
    ws_client.set(self.target_name, self.work_name, "Done")
  File "/usr/local/lib/python3.12/dist-packages/bmcgo/worker.py", line 111, in set
    self._on_error(exc, ignore_error)
  File "/usr/local/lib/python3.12/dist-packages/bmcgo/worker.py", line 69, in _on_error
    raise WsServerCommException("与任务状态服务器通信失败") from exc
bmcgo.worker.WsServerCommException: 与任务状态服务器通信失败

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/local/lib/python3.12/dist-packages/bmcgo/worker.py", line 186, in run
    ret = self._run(self.config, self.args)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/dist-packages/bmcgo/worker.py", line 272, in _run
    raise BmcGoException(f"任务 {work_name} 执行失败") from exc
bmcgo.errors.BmcGoException: 任务 work.build.conan 执行失败

[2026-08-05 10:21:29,246 ERROR] worker.py:196 任务 work.build.conan 执行失败
[2026-08-05 10:21:29,247 INFO] worker.py:67 [Errno 32] Broken pipe




task.txt (393.4 KB)

答案内容由AI生成,仅供参考:

总结

  • 直接原因work.build.conan 任务完成后向全局状态管理进程上报状态时发生 TCP 连接断裂(Broken pipe)。
  • 根源推测:状态管理进程异常、网络不稳定或环境 IPC 限制。
  • 基于 Context 的参考建议:拉取最新 manifest 代码重新执行,并确保构建环境网络/IPC 正常。

如果问题持续,建议在社区论坛(如 Topic 2464、4121 或 6957)中提供完整的日志和环境信息,以获得更针对性的帮助。

点击此处查看详细分析解答

根据您提供的日志和堆栈信息,问题出在构建流程的最后阶段:work.build.conan 任务实际已完成(日志中明确输出“任务 work.build.conan 完成”),但在向全局任务状态管理进程上报状态时发生了 BrokenPipeError,导致框架判定任务执行失败并抛出“与任务状态服务器通信失败”。

错误原因分析

在 openUBMC 的构建体系中,任务状态服务器是一个全局状态管理进程,它通过 TCP 端口 23456 接收各任务上报的执行状态,并允许其他任务查询指定任务的状态。根据 构建策略(来源:Search Result 第5项)的描述:

“各任务处于不同的进程中,任务状态同步需要借助进程间通信完成,为此我们创建了一个全局状态管理进程用于进程间状态同步,该进程会在 TCP:23456 上接收任务上报的执行状态报文并记录在全局任务状态表中,也能接收任务状态查询报文并返回指定任务的运行状态。”

当任务完成时,worker.py 中的 ws_client.set() 会通过该连接发送状态报文。若此时连接中断(例如状态管理进程异常退出、网络不稳定、TCP 连接被对端关闭等),就会触发 BrokenPipeError,进而被包装成 WsServerCommException,最终导致“与任务状态服务器通信失败”的错误。

社区中的类似案例

在社区论坛的帖子中(来源:Document Chunks reference_id 3),同样出现了完全一致的错误:

ERROR: 任务 work.oct_rtos 执行失败, 与任务状态服务器通信失败
[Errno 32] Broken pipe

该帖子后续并未提供针对此特定错误的直接解决方案,但有一条回复给出了通用建议:

“拉取最新的 manifest 代码重新执行,当前社区个人不能出带签名验签的 HPM 包”

这条建议虽然更侧重于签名验签问题,但也提醒我们保持 manifest 代码与构建环境的一致性,以避免一些潜在的依赖或配置冲突。

建议排查方向

基于 Context 中的信息,您可以尝试以下步骤:

  1. 检查任务状态服务器是否正常运行
    确保全局状态管理进程(通常绑定于 TCP 23456)未被意外终止、未被防火墙屏蔽,且网络连接稳定。

  2. 确认构建环境完整性

    • 拉取最新的 manifest 代码并重新初始化(执行 python3 init.py ...)。
    • 检查 Docker 容器或本地环境是否支持完整的 IPC 通信(例如 /dev/shm 是否可用、是否使用了 --privileged 模式)。
  3. 重现构建并观察
    重新运行相同的 bingo build 命令,注意观察 work.build.conan 完成后的状态同步是否偶发。如果能够稳定复现,尝试降低并发度或增加任务状态服务器的超时设置(若可配置)。

  4. 查看构建产物
    由于 work.build.conan 已经完成,实际的 HPM 包可能已经生成。检查日志中最后复制到 tmp_root 的文件是否已存在于构建目录中,例如 rootfs_openUBMC.hpm 或对应板型的固件包。如果产物完好,可尝试直接用于升级。

注意:当前社区个人构建环境默认不启用签名验签功能,若您的命令中包含 -o firmware_mgmt/*:community_enable=True 等选项,可能导致本地无法签名而触发其他错误,但与本次“通信失败”无直接关联。请根据实际需要调整选项。

总结

  • 直接原因work.build.conan 任务完成后向全局状态管理进程上报状态时发生 TCP 连接断裂(Broken pipe)。
  • 根源推测:状态管理进程异常、网络不稳定或环境 IPC 限制。
  • 基于 Context 的参考建议:拉取最新 manifest 代码重新执行,并确保构建环境网络/IPC 正常。

如果问题持续,建议在社区论坛(如 Topic 2464、4121 或 6957)中提供完整的日志和环境信息,以获得更针对性的帮助。

请按ai建议排查。
另外之前遇到过开发者电脑安装的迅雷、网盘等软件导致端口占用,影响WL构建稳定性的,新版本已取消固定端口绑定,避免端口占用导致的总是,建议升级到最新版本bingo再重试。

请反馈问题进展 @bd2025

感谢 问题已经解决