科技园 B 座 17 层的灯光永远比太阳更早亮起。
凌晨四点四十分,走廊尽头那台空调的嗡鸣像深海鲸群,一声叠一声,把夜色越压越低。林羡端着速溶咖啡,推开实验室的磨砂玻璃门。冷气扑面而来,她下意识缩了缩脖子——单薄卫衣领口蹭过耳后的碎发,像有人轻轻提醒:再坚持四十分钟,就能赶在晨会前把 BUG 复现的最后一步跑完。
桌上的屏幕亮着。
黑底终端里,一行行日志滚动成瀑布。最末端,一个“Segmentation fault”像一枚暗红色图钉,死死钉在她的瞳孔里。那是她连续跟了七个昼夜的内存泄漏:只要用户连续上传 200 张高分辨率照片,后台线程就会像被戳破的气球,呼啦啦泄空整片堆。
她给这个缺陷起了个名字——“深潜者”。
“再跑一次,就能定位到具体析构函数。”她自言自语,声音被空旷的机房吞掉一半。
手指敲下回车,风扇陡然提速。屏幕右下角的时间跳到 04:43,她的心跳也跟着跳快了一拍——那是她与缺陷之间的倒计时,也是她与黎明之间的赌局。
五个小时前,项目组长杜楠在群里发了一句话:
【明早 8:30 向甲方演示,所有阻塞性 BUG 必须清零。】
下面是一排“收到”。
林羡也回了“收到”,却盯着那两个字发愣——她知道“深潜者”不在任何已知阻塞列表里,可一旦甲方在演示时触发,整个相册功能会瞬间崩溃。到那时,就不是一条 BUG,而是一纸合同。
于是她留下加班。
到凌晨两点,复现脚本已经跑到 197 张,再坚持三分钟就能重现现场。可就在这时,机房门被推开。
“还没走?”杜楠的声音带着咖啡与薄荷牙膏的混合味。
林羡被吓了一跳,指尖在键盘上敲出一串乱码。她回头,看见杜楠倚在门框,衬衫袖口卷到小臂,腕表反着冷光。
“我在跟最后一个泄漏。”她嗓子发干。
“嗯。”杜楠走近,目光落在屏幕,“深潜者?挺酷的名字。”
他俯身,一手搭在她椅背,另一只手去拿桌上的鼠标。林羡闻到他袖口飘出的古龙水——冷冽、带一点金属味,像刀片。
“日志能导出吗?”他问。
“可以,但还没定位——”
“先给我,”杜楠打断她,“甲方那边临时要看详细报告,我帮你润色。”
林羡愣了愣。
在组里,杜楠是两年前的“最佳新人”,也是她的直属前辈。她进公司第一天,他递给她一杯拿铁,笑着说:“以后我罩你。”那杯拿铁很甜,甜到让她忘了自己乳糖不耐。
她点点头,把日志文件拖进共享盘。
“谢啦。”杜楠拍拍她肩,“赶紧回去睡,女孩子熬夜容易长痘。”
门关上的瞬间,林羡听见自己的心跳在胸腔里磕了一下,像玻璃杯碰到桌沿,声音清脆却带着不祥的裂痕。
04:50。
脚本跑到 200 张,程序果然崩溃。
屏幕弹出熟悉的 core dumped,她却长出一口气——终于抓到现场。
她迅速用 gdb 回溯栈帧,定位到一处智能指针重复释放。记下函数名、行号、触发条件,再打开缺陷管理系统,新建工单:
标题:【致命】深潜者——批量上传场景下的堆内存二次释放
影响版本:v2.1.3
严重级别:Blocker
她想了想,在“责任人”一栏填上自己的名字,然后点击保存。
保存成功的提示弹出的同时,系统刷新,责任人那一栏忽然变成了“杜楠”。
林羡眨眨眼,怀疑是浏览器缓存。
她刷新,再刷新——“杜楠”两个字纹丝不动,像被焊死在数据库。
寒意从尾椎爬上后脑。她点开操作日志,最新一条记录时间停留在 04:47,操作者:du.nan,动作:edit。
04:47——正是杜楠离开机房后的第三分钟。
林羡的手悬在鼠标上方,指尖冰凉。
她本能地截屏、保存证据,然后把页面导出成 PDF。做完这一切,她才发现掌心全是汗,黏在鼠标垫上,像一层薄薄的胶。
“也许只是系统错误。”她对自己说,声音却抖得不像自己的。
她打开企业微信,找到杜楠的头像,敲下一行字:
【杜老师,缺陷责任人好像被系统改动了,您能帮忙看一下吗?】
消息刚发出,左侧状态从“在线”变成“对方正在输入…”,又很快恢复空白。
没有回复。
05:15,晨会提醒弹窗跳出。
林羡把 PDF 发到自己邮箱,再备份到云盘。做完这一切,她关掉电脑,拖着发麻的双腿往大会议室走。
走廊的灯一盏盏亮起,像舞台依次打光,她却觉得自己正走向审判席。
会议室里,甲方、总监、组长、开发、测试,满满当当。
杜楠站在投影前,PPT 标题赫然是《深潜者缺陷根因与修复方案》。
“这个缺陷由我独立复现并定位,”他声音平稳,“根因是智能指针管理不当,已给出修复代码,今天就能合入主干。”
林羡站在最后一排,耳边嗡鸣。
PPT 上的截图,是她凌晨跑出的日志;函数名、行号、触发条件,一字不差。
唯一的变化是:责任人那一栏,被裁掉了。
“感谢杜工的快速响应!”甲方代表鼓掌。
总监笑着点头:“季度之星,非你莫属。”
林羡张了张嘴,喉咙像被塞了一团棉花。
她举起手机,想把 PDF 投到大屏,却发现网络断开——Wi-Fi 列表里,公司的信号显示“已禁用”。
杜楠的目光穿过人群,与她短暂相接。那一瞬,她读懂了里面的警告:
别闹。
会议结束,总监把她叫到办公室。
“听说你昨晚私自留宿实验室?”总监语气淡漠,“违反了安全条例。”
“我只是——”
“公司决定给予你辞退处理,立即生效。”
林羡像被重锤击中胸口,耳边嗡嗡作响。
“杜楠说,你屡次越级提交缺陷,扰乱版本节奏。”总监补了一句,“年轻人,别把平台当能力。”
她走出办公室时,门禁“滴”地一声失效,工牌在闸机红灯下变成一张废纸。
天空阴沉,雨点砸在地面,像无数细小的钉子。
她抱着纸箱站在路边,雨水顺着刘海滑进领口。
手机屏幕亮起,是父亲发来的微信:
【闺女,生日快乐,记得吃长寿面。】
她这才想起,今天是她 26 岁生日。
雨水模糊了屏幕,她打字,却怎么也拼不对“我很好”三个字。
地铁末班车在隧道尽头呼啸而过,风卷起她的卫衣下摆。
她跟着人群走进车厢,灯光惨白,玻璃映出她苍白的脸。
耳机里随机播放到一首歌,歌词唱:
“如果黑夜没收了火把,就把自己点燃。”
她闭上眼,心脏却在胸腔里越跳越乱,像被一只看不见的手攥紧。
出站口,雨更大了。
她站在天桥上,看车灯在雨幕里拉出长长的红线。
呼吸越来越短,胸口越来越闷。
她伸手去掏口袋里的工牌,却只摸到一张被雨水泡皱的辞退通知。
世界开始旋转,天桥的栏杆变成柔软的丝带。
她听见自己倒下的声音,很轻,像一片树叶落在水面。
雨声渐远,黑暗涌上来。
最后一刻,她看见终端里那行被改掉的“责任人”,像一道无法愈合的裂缝,在视网膜上灼烧。
雪崩,始于一片雪花;
而她的雪崩,始于一个回车键。