Steam 的 Remote Play 主机在 Steam 自带的编码器中崩溃,Valve 已将第二份报告合并处理

Steam 的 Remote Play 主机在 Steam 自带的编码器中崩溃,Valve 已将第二份报告合并处理

💡 原文中文,约1600字,阅读约需4分钟。
📝

内容提要

Steam远程畅玩主机在捆绑的FFmpeg编码器libavcodec中发生段错误崩溃,触发堆内存损坏。两份报告均指向Steam自带的libavcodec,H.264编码几分钟即崩溃,HEVC可维持数小时。Valve已将第二份报告合并为重复问题,但未说明根因,问题仍开放。

🔎

延伸解读

崩溃特征:编解码器影响频率而非是否发生

两份报告均指出,崩溃发生在Steam捆绑的FFmpeg编码器内部,具体在avcodec_send_frame期间释放AVFrame时触发堆内存损坏。编解码器选择只影响崩溃频率:H.264在串流开始后几分钟内即崩溃,HEVC则可运行数小时。这意味着问题并非特定编解码器独有,而是编码器底层存在共性缺陷,用户切换编解码器只能延缓崩溃,无法根治。

硬件差异下的共性指向Steam自带编码器

第二份报告来自完全不同的硬件:Ryzen 7 7800X3D搭配Radeon RX 9070 XT,使用集成GPU编码,客户端为iPad上的Steam Link。Valve在13分钟内将其标记为重复问题。两台机器均运行AMD显卡上的SteamOS,且都通过Steam捆绑的FFmpeg进行编码。硬件差异排除了特定GPU或驱动问题,将矛头指向Steam自带的编码器组件。

触发点可能是一次性硬件编码探测

第二份报告作者统计10月13日连续发生7次崩溃,H.264与HEVC均有,每次崩溃都发生在连接后几秒内。他们将触发点锁定在Steam的一次性硬件编码探测上——该探测在客户端日志中表现为尝试CUDA、加载libcuda失败后回退到VAAPI,且每个Steam进程只运行一次。内核日志显示CGameStreamVideo在libc中发生段错误,调用栈经过Steam的libvideo进入av_freep与avcodec_send_frame。

Valve的公开立场与未解疑问

Valve已为13704打上标签,并判定第二份报告是同一个bug,但未说明是什么损坏了堆内存,也未说明故障出在Steam自己的libvideo还是Steam捆绑的FFmpeg中。13704在10月14日仍处于打开状态。目前仅有这两份报告,规律只能推到这里。Valve在9月称Steam Machine是Steam Frame的完美主机,而这两份报告用的都是平面游戏的Remote Play路径。

❓

Q&A

Steam Remote Play 主机崩溃的具体原因是什么?

崩溃发生在 Steam 捆绑的 FFmpeg 视频编码器内部,于 avcodec_send_frame 期间释放 AVFrame 时触发堆内存损坏,导致 SIGSEGV 段错误。

H.264 和 HEVC 编码在崩溃频率上有什么差异?

H.264 在开始串流后几分钟内即崩溃;HEVC 则可以运行数小时。

Valve 对第二份崩溃报告是如何处理的?

Valve 在 13 分钟内将第二份报告(编号 13731)关闭,标记为与第一份报告(编号 13704)重复,但未说明根因,问题仍开放。

第二份报告中的硬件配置和触发条件是什么?

第二份报告来自 Ryzen 7 7800X3D 搭配 Radeon RX 9070 XT,使用集成 GPU 编码,客户端是 iPad 上的 Steam Link。触发点锁定在 Steam 的一次性硬件编码探测上,该探测尝试 CUDA 失败后回退到 VAAPI。

目前关于这个崩溃问题有哪些已知证据?

只有两份报告,均指向 Steam 捆绑的 libavcodec,且都运行 AMD 显卡上的 SteamOS。Valve 未说明是什么损坏了堆内存,也未说明故障出在 Steam 自己的 libvideo 还是捆绑的 FFmpeg 中。

这个崩溃问题与 Valve 的哪些产品组合相关?

报告中的传输路径是 Steam Machine 主机向 Steam Frame 串流,Valve 曾称 Steam Machine 是 Steam Frame 的完美主机,但这两份报告用的都是平面游戏的 Remote Play 路径。

🏷️

标签

➡️

继续阅读