网易首页 > 网易号 > 正文 申请入驻

OpenAI 将崩溃调试视为流行病学研究,修复了存在 18 之久年的 GNU libunwind 漏洞

0
分享至


作者 | Steef-Jan Wiggers

译者 | 平川

OpenAI 的工程师们花了数周时间,试图解释 Rockset 中那些神秘的崩溃问题。Rockset 是一款 C++ 数据基础设施服务,为 ChatGPT 的搜索和数据插件提供支持。函数似乎会返回错误的内存地址,栈指针在执行过程中似乎会偏移 8 个字节。团队提出的每一种假设都面临着有力的反证。这个 Bug 似乎根本不可能存在。

他们原本以为是一个 Bug ,结果却发现是两个互不相关的 Bug ,它们只是很巧合地在同一时间被发现了。这一突破性发现并非来自对单个崩溃事件的深入排查,而是源于转向了他们所说的“流行病学调试”:构建一条管道,自动分析过去一年中生产环境的每一个核心转储文件,然后寻找整体规律,而不是对单个案例进行推断。

该团队让 ChatGPT 编写了一个脚本,用于下载每个核心文件的开头部分,提取寄存器数据,过滤已知的误报,并将每次崩溃标记为“返回空指针”、“栈对齐错误”或其他类型。他们将该脚本并行应用于过去一年中的所有 Rockset 核心转储文件。他们很快就发现了相关性。原本从症状上看属于同类的问题,实际上对应两组特征完全不同的崩溃事件。

这些因栈对齐错误导致的崩溃均源自同一个 Azure 区域,有明确的起始日期,而且从未出现在长期运行的节点上。团队追踪发现,这些崩溃源自一台物理主机,其 CPU 正在悄无声息地产生错误的结果。它既没有过热,也没有抛出机器检查异常,而只是数学运算默默出了错。将该主机从服务中移除后,因栈对齐错误导致的崩溃便完全消失了。

在剔除硬件崩溃问题后,剩余的由“返回空指针”导致的崩溃问题便变得可控了。此前,团队曾排除了 C++ 异常展开的原因,因为他们认为自己找到了反例:在未使用异常的代码路径中发生了崩溃。但这些反例全都来自有硬件损坏的故障集群。一旦剔除了这些干扰因素,剩余的所有崩溃便都是发生在异常展开过程中了。

问题发生的根本原因是 GNU libunwind 的 _Ux86_64_setcontext 函数中有一个已经存在 18 年的竞争条件。在 C++ 异常展开过程中,libunwind 会在栈上合成一个 ucontext_t 结构体,填充所需的寄存器状态,然后调用 _Ux86_64_setcontext 将控制权转移给清理处理程序。问题在于:_Ux86_64_setcontext 在从旧结构体中读取指令指针的操作尚未完成之前,就将栈指针(%rsp)更新为指向新的栈帧。一旦 %rsp 发生变化,该结构体便不再属于活动栈的一部分,也不再受内核红区的保护。如果信号恰好在 %rsp 更新与 %rip 读取之间的这一时间窗口内到达,内核就会在该结构体之上构建其信号帧,指令指针遭到破坏,函数便会跳转到 NULL 或垃圾地址。

竞争窗口的宽度正好为一条指令。以现代处理器的时钟频率计算,这大约相当于 100 皮秒。在大多数程序中,这种情况根本不会被触发。OpenAI 的 Rockset 使用了 timer_create 函数,每隔几毫秒的 CPU 时间就发送一次 SIGUSR2 信号,为的是实现轻量级的按查询记账,这样产生的信号发送事件远多于传统的应用程序。正是这种高频的信号发送,将只在理论上可能发生的竞争状况转化成了实际生产环境中的崩溃。

该团队将一个修复方案和一个自包含的重现示例提交到了 GNU libunwind,并通过验证证实,其他展开器(如 libgcc)不存在这个问题。该修复方案通过重新排序指令,确保在更新 %rsp 之前先读取 %rip,从而彻底消除了这个时间窗口。

该团队对这一教训的总结值得全文引用:

最重要的步骤并非巧妙地解读汇编代码,也不是对细节的深入了解,而是构建一个高质量的数据集。如果没有这个数据集,我们就会把两种截然不同的现象混为一谈,并试图通过推理来理清这种混乱。一旦获得了准确且完整的全量数据,问题的结构便显而易见了。

如果你的团队正在排查难以解释的生产环境崩溃问题,请检查你们是否将多个 Bug 混为了一谈。那些看似与所有假设都不相符的症状,实际上可能并不矛盾;它们可能与两个不同的假设相符,而你却无意中将它们混淆了。洞察问题结构的最快途径,并非对单个案例进行更深入的分析,而是获取涵盖所有故障案例的完整、带标签的数据。

这篇完整的工程技术博文包含了详细的栈内存示意图、存在漏洞的汇编指令,以及揭示出两种不同类型故障的崩溃率可视化图表。

https://www.infoq.com/news/2026/07/openai-libunwind-core-dumps/

声明:本文由 InfoQ 翻译,未经许可禁止转载。

会议推荐

做 AI 的谁还没点技术焦虑,来 AICon 深圳站,吃颗技术定心丸! 大会限时 9 折专属优惠,现在报名立减 580,更多详情可扫码或联系票务经理13269078023 进行咨询。

今日荐文

你也「在看」吗?

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
俄罗斯和中国,投下反对票

俄罗斯和中国,投下反对票

都市快报橙柿互动
2026-09-11 07:11:10
乌克兰反对无效,中国通知全球正式出兵俄罗斯,千万颗地雷我们清

乌克兰反对无效,中国通知全球正式出兵俄罗斯,千万颗地雷我们清

小小科普员
2026-09-10 15:05:11
反转来了!助学事件迎来大反转!被资助女生发声称“说曝光资助人是情急失言”,资助人删帖并送去1500元资助费,但帮扶方式已彻底改变

反转来了!助学事件迎来大反转!被资助女生发声称“说曝光资助人是情急失言”,资助人删帖并送去1500元资助费,但帮扶方式已彻底改变

行者聊官
2026-09-10 09:14:31
因包装标注“小米”“米家”,灯具商家被起诉商标侵权 小米回应:被起诉者多是反复违规

因包装标注“小米”“米家”,灯具商家被起诉商标侵权 小米回应:被起诉者多是反复违规

红星新闻
2026-09-10 20:41:13
张继科:刘翔是奥运冠军!是我们国家的英雄 别的不知道不能胡说

张继科:刘翔是奥运冠军!是我们国家的英雄 别的不知道不能胡说

念洲
2026-09-11 07:00:49
再这么错下去,中产的崩溃是迟早的事!

再这么错下去,中产的崩溃是迟早的事!

纽约君
2026-09-09 22:01:41
事态已经全面升级!赖清德有可能成为新中国历史上,唯一一位在任台湾地区领导人中出现重大变故的人物

事态已经全面升级!赖清德有可能成为新中国历史上,唯一一位在任台湾地区领导人中出现重大变故的人物

人生录
2026-09-11 00:05:21
最新!上海警方公布抓获一餐饮店老板,仍在寻找更多被害人

最新!上海警方公布抓获一餐饮店老板,仍在寻找更多被害人

环球网资讯
2026-09-10 21:34:54
网友:谁都不服,就服郭德纲!官方通报都已经出来了,他本人硬是不道歉、不露面、不发声明!

网友:谁都不服,就服郭德纲!官方通报都已经出来了,他本人硬是不道歉、不露面、不发声明!

谭谈社会
2026-09-09 18:13:09
赛力斯再创新低价47元,大跌73%,一股民赚300万没走倒亏55万割肉

赛力斯再创新低价47元,大跌73%,一股民赚300万没走倒亏55万割肉

财经智多星
2026-09-11 06:26:23
3分钟2球!4-0大胜!时隔1003天重返欧冠 9.2亿豪门开门红

3分钟2球!4-0大胜!时隔1003天重返欧冠 9.2亿豪门开门红

狍子歪解体坛
2026-09-11 04:53:40
私吞上亿善款真相终于大白?官方正式宣布,54岁韩红身份迎来转变

私吞上亿善款真相终于大白?官方正式宣布,54岁韩红身份迎来转变

乌克兰小静
2026-09-10 09:09:45
女篮世界杯太疯狂了!世界第3第4第5全被淘汰:第11却逆袭杀进四强

女篮世界杯太疯狂了!世界第3第4第5全被淘汰:第11却逆袭杀进四强

篮球快餐车
2026-09-11 06:17:49
8 月 28 日,尼日利亚通信卫星信号被中方正式切断。没有剑拔弩张的外交博弈,也无关大国之间的政治施压

8 月 28 日,尼日利亚通信卫星信号被中方正式切断。没有剑拔弩张的外交博弈,也无关大国之间的政治施压

回京历史梦
2026-09-10 17:53:55
日结400元,男子在江西一景区当喷泉“活体雕塑”:“无KPI,看谁不顺眼直接滋他”,当事人回应:想给游客来点情绪价值

日结400元,男子在江西一景区当喷泉“活体雕塑”:“无KPI,看谁不顺眼直接滋他”,当事人回应:想给游客来点情绪价值

深圳晚报
2026-09-10 23:04:21
被央视通报1天后,“一言不发”的郭德纲,不再顾忌所谓的体面

被央视通报1天后,“一言不发”的郭德纲,不再顾忌所谓的体面

小鱼爱鱼乐
2026-09-10 16:43:27
女儿跟对象开玩笑,说父母是农民,没有退休金。男方愣了下:“你说的是真的吗?”女儿点头,男方脸色一沉:“那咱们不合适。”

女儿跟对象开玩笑,说父母是农民,没有退休金。男方愣了下:“你说的是真的吗?”女儿点头,男方脸色一沉:“那咱们不合适。”

背包旅行
2026-09-10 18:14:09
这么多“刚好”、“巧合”凑在一起,你觉得公众会信吗?

这么多“刚好”、“巧合”凑在一起,你觉得公众会信吗?

走读新生
2026-09-10 17:24:39
刘翔发文后上海体育局通报:11年平均月薪7174元,几十万买断,体育人争光成了一张遮羞布

刘翔发文后上海体育局通报:11年平均月薪7174元,几十万买断,体育人争光成了一张遮羞布

李晚书
2026-09-10 15:36:04
冼奕辉因病医治无效逝世,年仅57岁

冼奕辉因病医治无效逝世,年仅57岁

上观新闻
2026-09-10 16:46:54
2026-09-11 08:51:01
AI前线 incentive-icons
AI前线
面向AI爱好者、开发者和科学家,提供AI领域技术资讯。
1724文章数 170关注度
往期回顾 全部

科技要闻

一文看懂:iPhone折叠屏顶配2万6,10月才卖

头条要闻

牛弹琴:玩危险游戏 阿联酋快把阿拉伯兄弟们得罪光了

头条要闻

牛弹琴:玩危险游戏 阿联酋快把阿拉伯兄弟们得罪光了

体育要闻

16岁的国产小库里,还有多少功课要做

娱乐要闻

参加晚宴,刘亦菲因合照深陷争议

财经要闻

向松祚:年轻人不必过早买房

汽车要闻

标配全线控底盘 全新一代智己LS6预售20.99万起

态度原创

本地
数码
时尚
公开课
军事航空

本地新闻

拼假 13 天国内长线路线合集

数码要闻

苹果调整42mm/46mm规格Apple Watch Series 12差价

所以Luke更喜欢沙发,对吗?

公开课

李玫瑾:为什么性格比能力更重要?

军事要闻

中东“两线战火”同时升级

无障碍浏览 进入关怀版