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

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 翻译,未经许可禁止转载。

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

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.

相关推荐
热点推荐
美军已增兵,日本也介入了,中方连发2道禁令,解放军准时行动

美军已增兵,日本也介入了,中方连发2道禁令,解放军准时行动

影孖看世界
2026-07-21 15:54:27
足协杯8强诞生!山东泰山vs上海海港,晋级悬念不大,4强基本如下

足协杯8强诞生!山东泰山vs上海海港,晋级悬念不大,4强基本如下

男足的小球童
2026-07-23 17:49:01
目前的中国股市,如果想赚大钱,就买这两种股票,赚到盆满钵满!

目前的中国股市,如果想赚大钱,就买这两种股票,赚到盆满钵满!

股经纵横谈
2026-07-21 18:21:44
惨烈的校招现状:年薪600万的博士抢不到,月薪6千的计算机没人要

惨烈的校招现状:年薪600万的博士抢不到,月薪6千的计算机没人要

慧翔百科
2026-07-22 17:45:42
周星驰明确《功夫女足》会拍第二部

周星驰明确《功夫女足》会拍第二部

齐鲁壹点
2026-07-23 10:58:39
境外400亿,潘石屹家族是怎么进入全球上流的?

境外400亿,潘石屹家族是怎么进入全球上流的?

世界灵敏度赵灵敏
2026-07-22 22:13:39
随着朱芳雨卸任,广东宏远新的总经理,99%在以下三人之间产生

随着朱芳雨卸任,广东宏远新的总经理,99%在以下三人之间产生

砚底沉香
2026-07-24 04:55:49
谷歌:持有SpaceX股份价值为940亿美元 其中约800亿美元受短期禁售协议约束

谷歌:持有SpaceX股份价值为940亿美元 其中约800亿美元受短期禁售协议约束

财联社
2026-07-23 20:03:04
苹果加这两样煮水喝,沾床就睡!连打雷都叫不醒

苹果加这两样煮水喝,沾床就睡!连打雷都叫不醒

白米饭怎么吃
2026-07-24 08:43:32
贾玲张小斐闹掰真相大白,44岁贾玲真实处境曝光

贾玲张小斐闹掰真相大白,44岁贾玲真实处境曝光

最美的笔触
2026-07-12 12:11:22
2026号1号文件:严禁上级机关事业单位从基层借调职工!

2026号1号文件:严禁上级机关事业单位从基层借调职工!

细说职场
2026-07-23 13:44:11
屌炸天!相亲相到植物人,媒婆的话震碎三观,这是什么奇葩操作

屌炸天!相亲相到植物人,媒婆的话震碎三观,这是什么奇葩操作

另子维爱读史
2026-07-20 21:39:09
惊人发现!100%女人被玩之后,不再纠缠,而是无声的进行8种蜕变

惊人发现!100%女人被玩之后,不再纠缠,而是无声的进行8种蜕变

有态度网友19Dsym
2026-07-05 15:40:10
中国体型最大的5种蛇!眼镜王蛇不是第一,菜花蛇居然是倒数?

中国体型最大的5种蛇!眼镜王蛇不是第一,菜花蛇居然是倒数?

农夫也疯狂
2026-07-24 08:49:15
配享太庙!抗击渐冻症7年的蔡磊迎一大好消息,各大官媒同步发文

配享太庙!抗击渐冻症7年的蔡磊迎一大好消息,各大官媒同步发文

云舟史策
2026-07-21 11:30:22
TA预测下届世界杯冠军:西班牙大概率仍在巅峰,法国或卷土重来

TA预测下届世界杯冠军:西班牙大概率仍在巅峰,法国或卷土重来

懂球帝
2026-07-24 00:15:12
台媒曝“锋菲恋”复合内幕:谢霆锋苦追王菲才成功,透露张柏芝对王菲私下态度

台媒曝“锋菲恋”复合内幕:谢霆锋苦追王菲才成功,透露张柏芝对王菲私下态度

小椰的奶奶
2026-07-23 17:29:22
纪委态度明确!公职人员上班抽空接孩子,算不算违规讲清楚了

纪委态度明确!公职人员上班抽空接孩子,算不算违规讲清楚了

音乐时光的娱乐
2026-07-23 10:06:34
没了中国市场后,大量鲜果烂地无人问,开始后悔得罪中国?迟了!

没了中国市场后,大量鲜果烂地无人问,开始后悔得罪中国?迟了!

经纬戎韬
2026-07-21 18:59:44
1935 年张謇独子遭老仆枪杀后仆自尽,其妻对警员直言不必追查

1935 年张謇独子遭老仆枪杀后仆自尽,其妻对警员直言不必追查

唠叨说历史
2026-03-26 10:13:56
2026-07-24 11:07:00
InfoQ incentive-icons
InfoQ
有内容的技术社区媒体
12697文章数 51994关注度
往期回顾 全部

科技要闻

北大发文祝贺校友王虹、邓煜荣获菲尔兹奖

头条要闻

菲尔兹奖得主王虹:16岁就考入北大 曾常被"挂黑板"

头条要闻

菲尔兹奖得主王虹:16岁就考入北大 曾常被"挂黑板"

体育要闻

勇士24岁的MVP,也是个勒布朗?

娱乐要闻

陈妍希姐姐到场追星张凌赫

财经要闻

美国对数十个国家加征10%-12.5%的关税

汽车要闻

满配华为乾崑六件套 东风奕派M8限时权益价16.58万起

态度原创

房产
家居
手机
旅游
亲子

房产要闻

狂抢111轮,溢价39%,楼面价刺破9500!海口土拍杀疯了!

家居要闻

2026建博会(广州) 公装联探展交流活动

手机要闻

供应链再现制造难题 苹果首款折叠屏iPhone Ultra再传面临延期发售

旅游要闻

岱庙听雨 一院烟雨消尽盛夏尘嚣

亲子要闻

数额惊人!七宝爸透露七胞胎养育开销,光衣食住行年花费保底24W

无障碍浏览 进入关怀版