因程序员少打一个字符,大量用户电脑出现严重Bug!
如果要问,程序员的劲敌是什么?
不容置疑,答案一定是Bug的出现。
前几日,就连互联网大厂谷歌的程序员都犯了低级错误。
近期,谷歌为Chromebook推送了Chrome OS 91版本,版本号91.0.4772.165。
没想到,就是这次更新,出现了重大Bug。
安装更新后,有大量用户反馈称,自己的Chrome笔记本笔记本陷入无限重启状态,只能恢复出厂设置然后再重新更新,但数据会全部丢失。
明明输入的开机密码是对的,但就是一直提示“无法验证您的密码”,进入不了系统。
一旦重启笔记本,就将陷入无法登陆的死循环,反复重启的状态。
还有部分用户的Chrome OS在重新启动后,会自动下载更新并切换到新版本。
因此,重启设备的用户会突然被锁在外面,无法正常使用设备。
那么,究竟是什么引起的这次Bug的出现呢?
一位Reddit网友从谷歌官网源码中发现,该问题是由一个极其低级的错误引发的。
简单来说,就只是因谷歌程序员少输了一个字符“&”。
原本正确的代码应该是:
if (key_data_.has_value() && !key_data_->label().empty()) {
结果程序员写成了
if (key_data_.has_value() & !key_data_->label().empty()) {
而这串代码是保存用户加密密钥的部分,所以,这个错误直接导致系统无法将存储的密钥与输入的密钥进行比较。
此事传出后,许多网友评论称,“谷歌没有进行代码测试吗?”
“谷歌的测试团队这两个月是在休假吗?”
“谷歌程序员太自信了?”
有一些网友也从中找到了自信。
“我感觉我也能进谷歌了。”
还有网友庆幸自己没有及时更新系统的习惯:“这就是我讨厌强制更新的原因。一般像我这样经验丰富的IT专业人士选择更新时,通常是在一大群人都更新了并且没有报告任何问题之后。”
其实,Chrome OS共有三个测试渠道:“金丝雀”渠道、“开发”渠道和“beta测试”渠道,代码变更应经过这三个渠道的审查,版本发布之间进行数周的测试。
所以,这个Bug的出现也属实有些匪夷所思!
不过,在接到反馈后,谷歌也迅速发布了解决办法,删除了91.0.4472.165版本,并将Chromebook的系统版本退回至91.0.4472.147。
虽然这个版本也不是太安全,但起码用户可以登入电脑了。
另外,谷歌也在7月20日的声明中说已经确定了问题所在,并发布新版本91.0.4472.167以解决该问题,只要Chromebook系统更新至此新版本,用户就可以顺利登入电脑进行正常操作。
受糟糕更新版影响的用户可以等待设备再次更新,或者“强力清洗”设备(即擦除所有本地数据),以便能够正常登录。
说起来,不只是谷歌,国内外的各大科技巨头,实际上或多或少都出现过一些“匪夷所思”的Bug事件。
比如,Gab公司经验丰富的CTO曾将代码中“reject”和“filter”拆分,导致一些知名人士(比如特朗普)在内的、70GB大小的信息数据被泄露,公司还被黑客敲诈了50万美元。
比如,苹果的iOS 14.7出现Bug,导致App Store无法更新应用,用户设备电池健康降低。
比如,荣耀test邮件事件,该Bug可令玩家免费领取到多个英雄,皮肤,以及英雄碎片,皮肤碎片。
更不用说,每次更新都会带来一系列Bug的Windows 10。
这些层出不穷的例子都表明,再缜密的程序,归根结底都是由一个个活生生的程序员亲自码出来的,出错也是在所难免。
作为程序员,你曾经又写出过什么Bug呢?欢迎大家在评论区交流。
原文链接:https://mp.weixin.qq.com/s/ppG0-mCAr3TVPBdIQ2DjfA
相关文章