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

以为是测试竞态条件,结果揪出Redis客户端内存损坏隐藏漏洞

0
分享至

三个核心测试,2到4天之内,可靠性从100%直接跳水到接近零。这在持续集成里,基本等于告诉所有人:别提交代码了。

大卫是 Buildkite 伸缩团队的工程经理。一个平平无奇的周二下午,他盯着构建失败通知,顺手截了一张测试仪表盘的图丢进 Slack 群组。图上最刺眼的,不是某次偶然的失败,而是一串刷屏级的不稳定测试——业内俗称“flaky tests”。


没人比持续集成平台更熟悉 flaky tests 了。代码库一膨胀,测试跑多了,总会有那么几条偶尔翻车,通常修一修或者重新触发一次就过去了。但这回不太一样。十五分钟内,团队就公开拉起了安灯绳:这些测试已经翻到了妨碍生产部署的程度。用大卫的原话说,“当务之急是让主干恢复可用”。于是他们做了唯一理性的选择——把闹事的测试从套件里暂时踢出去。


危机等级骤降之后,多数被阻塞的开发者都各回各家继续搬砖。唯独大卫多做了一个动作:他用 Buildkite 自带的 Test Engine 可靠性评分,追踪这几个测试到底是什么时候突然崩坏的。结果干净到刺眼:最不稳定的三个 flaky tests,大约在2至4天前,从近乎100%可靠,直接掉成“完全不可靠”。他在团队频道里写下:“我翻了这段时间合入的 PR,没找到明显的变化……唯一扎眼的就是一次 Redis 升级?”

那次 Redis gem 升级,是上一个周五下午做的,执行人叫帕特里克·罗宾逊——一位资深工程师,同时也是本文半个叙述者。帕特里克最喜欢干两件事:用第三人称谈论自己,和一头扎进足够鬼畜的底层 bug 里。他事后回忆,那次 gem 升级过程丝滑得像涂了黄油,线上没出现任何异常。但现实给他留了一颗地雷。

一看到 Redis 升级这条线索,调查团队立刻冒出了第二个假说:这些 flaky tests 可能并非代码逻辑出错,而是因为它们在特定的事件顺序下才暴露问题。要知道,这批不稳定的测试属于特性测试套件的一部分,环境里不光有 RSpec,还带了一个 Selenium 的无头浏览器,以及一套完整的测试环境——包含 Web/API 服务器、数据库和 Redis 服务器。这种混合架构里,不同组件之间的竞态条件是 flaky tests 的经典元凶。不幸的是,这个假说直接把调查者带进了沟里。

帕特里克沿着“竞态条件”的方向挖了一轮,发现表面上的时序冲突根本无法解释崩溃的底层特征。直到他把焦点转回到那个 Redis gem 升级上,一个更隐蔽的事实才开始浮现:问题不在测试本身的执行顺序,而在于数据在更早阶段就已经悄悄被写坏了,只是崩溃那一刻才露出牙齿。

这正是经典的内存损坏特征——数据被损坏了,但并不立刻引爆,等到某个后续操作再访问那块内存时,程序才轰然倒下。对调试者来说,这类 bug 令人发疯:常规工具抓的是崩溃时刻的系统状态,它能告诉你“这里有个野指针”,却不告诉你这个指针是谁在什么时候弄脏的。


帕特里克切入的方式,不是从崩溃栈帧往回追,而是从那个“数据应该还完好”的时间点开始比对。很快,证据链指向了 redis-client 库的一个 use-after-free 漏洞——对象被释放后,某个路径依然持有了它的引用并执行了操作,导致内存被静默改写。而这种改写正好只会在特定负载模式下出现,平时藏得滴水不漏。

也就是说,周五那个 Redis 升级,虽然表面上空转良好,实际却带着一个高危的客户端库变更。它没有立刻炸掉线上环境,却在几天后的特性测试里,通过连续的读写交互,把内存损坏一点一点推到了可见的边界。那些 flaky tests 并不是真 flaky——它们只是在不同时间点触到了那块已经被污染的内存,结果看起来时好时坏。

复盘整个排查链条,真正让线索从噪声里浮出来的,是 Buildkite 的 Test Engine 可靠性评分。它没有直接指向内存损坏,却给出了精确到天的稳定性陡降曲线,把注意力引向了唯一的变量:那次 Redis gem 升级。而如果没有这个时间锚点,团队很可能还会在“竞态条件”的假设里打转,白白浪费数天甚至数周。

这个案例也再次印证了一条古老的调试铁律:当心那些数据被破坏却不立刻坍塌的 bug。它们像代码库里的定时哑弹,不会在你犯错的那一刻引爆,只会在未来的某个下午,用一个毫无关联的测试失败,幽幽地告诉你:“嘿,你刚刚其实早就搞砸了。”

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

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.

相关推荐
热点推荐
威少要告别NBA?国王不希望他回归 至今无任何球队开出正式合同

威少要告别NBA?国王不希望他回归 至今无任何球队开出正式合同

醉卧浮生
2026-07-22 08:27:13
谢贤去世前张柏芝火速安排大儿子提前返港陪伴爷爷,谢贤曾多次公开称赞张柏芝“把孩子教得很好”

谢贤去世前张柏芝火速安排大儿子提前返港陪伴爷爷,谢贤曾多次公开称赞张柏芝“把孩子教得很好”

鲁中晨报
2026-07-21 16:28:16
引起众怒,何小鹏应该深刻反思自己在海外的不当言论

引起众怒,何小鹏应该深刻反思自己在海外的不当言论

新浪财经
2026-07-21 10:57:42
7月22日,人社部财政部关于2026年调整基本养老金的通知公布了吗

7月22日,人社部财政部关于2026年调整基本养老金的通知公布了吗

云景侃记
2026-07-22 09:41:15
明日大暑,老话说“上午大暑把扇丢,下午大暑热死牛”,今年大暑几点?

明日大暑,老话说“上午大暑把扇丢,下午大暑热死牛”,今年大暑几点?

小谈食刻美食
2026-07-22 07:53:57
新冠又来了

新冠又来了

南风窗
2026-07-20 12:39:20
5000万冠军奖金被砍半!西班牙夺冠先给美国交税,梅西更惨

5000万冠军奖金被砍半!西班牙夺冠先给美国交税,梅西更惨

涵有话说
2026-07-22 10:34:46
就这五个大字,居然拿下了2025年的诗歌一等奖。

就这五个大字,居然拿下了2025年的诗歌一等奖。

岁月有情1314
2026-07-19 11:38:52
12年前率战车冲进马里乌波尔救人的德拉帕季出任乌军总司令

12年前率战车冲进马里乌波尔救人的德拉帕季出任乌军总司令

桂系007
2026-07-22 07:11:00
菲律宾屡屡挑衅,中国为啥不反击?俄专家一语道破:中国非常聪明

菲律宾屡屡挑衅,中国为啥不反击?俄专家一语道破:中国非常聪明

花颜蕴韵
2026-07-22 01:35:44
亚洲最穷国,落后中国30年,女性却惊人开放,很多土豪都想去定居

亚洲最穷国,落后中国30年,女性却惊人开放,很多土豪都想去定居

抽象派大师
2026-07-22 05:23:14
女生高考684分,称花3000元咨询高考规划师,被录进“双非”:至今仍是全校录取最高分,原计划上央财或上财

女生高考684分,称花3000元咨询高考规划师,被录进“双非”:至今仍是全校录取最高分,原计划上央财或上财

大风新闻
2026-07-22 08:36:03
许昕怒怼网友:马龙带飞我?那他为啥不带飞你?一般人请不动我

许昕怒怼网友:马龙带飞我?那他为啥不带飞你?一般人请不动我

念洲
2026-07-22 08:33:55
字节跳动出新规:禁止‘哥姐总’称呼,只许直呼其名!

字节跳动出新规:禁止‘哥姐总’称呼,只许直呼其名!

侃故事的阿庆
2026-07-21 00:53:20
金巧巧直播喊话:“沈阳的那个谁,你欠我爸爸60万,赶紧还钱!”原来她的难,你想不到

金巧巧直播喊话:“沈阳的那个谁,你欠我爸爸60万,赶紧还钱!”原来她的难,你想不到

她时尚丫
2026-07-21 20:44:10
实至名归!75年首例!库里你牛!

实至名归!75年首例!库里你牛!

柚子说球
2026-07-22 13:09:22
“这才是政审的意义!”女子考公上岸后,被高中欺负过的同学举报

“这才是政审的意义!”女子考公上岸后,被高中欺负过的同学举报

妍妍教育日记
2026-07-17 08:25:14
窦文涛:我过去严重失眠,现在入睡不过2分钟,靠的就是一个方法

窦文涛:我过去严重失眠,现在入睡不过2分钟,靠的就是一个方法

叹知
2026-07-22 09:41:50
伊朗武装部队回应特朗普袭击核设施言论

伊朗武装部队回应特朗普袭击核设施言论

新华社
2026-07-22 09:00:03
又一新线即将开通,深圳宝安机场、广州白云机场100分钟内直连!

又一新线即将开通,深圳宝安机场、广州白云机场100分钟内直连!

深圳晚报
2026-07-22 12:48:28
2026-07-22 13:43:00
爬虫饲养员
爬虫饲养员
业余养了只叫“龙虾”的AI爬虫,主业是给互联网打工。
359文章数 54关注度
往期回顾 全部

科技要闻

怕了?美财长扬言:严查中国AI

头条要闻

男子拍台球女助教屁股被报警猥亵:我"预告"过很多次

头条要闻

男子拍台球女助教屁股被报警猥亵:我"预告"过很多次

体育要闻

“不会进球”的前锋,在世界杯决赛进球了

娱乐要闻

谢贤离世风波再起!王菲探望细节曝光

财经要闻

被误伤的A股:韧性、预期与底气

汽车要闻

WAIC专访|易启未来余志勇:网易孵化按摩机器人 能识穴会“手法”

态度原创

本地
家居
房产
公开课
军事航空

本地新闻

杭州诗意路名,自带氛围感

家居要闻

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

房产要闻

海中870分!2026海南中招提前批分数线出炉!

公开课

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

军事要闻

乌克兰高层爆发严重内斗 泽连斯基撤换"屠夫"总司令

无障碍浏览 进入关怀版