谷歌程序员少输一个“&”,差点让全球Chrome笔记本变砖
本文经AI新媒体量子位(公众号ID:QbitAI)授权转载,转载请联系出处。
代码只是少了一个字符,后果竟如此可怕。
上周,一些使用Chrome OS笔记本的用户发现,一旦重启笔记本,就将陷入了无法登录的死循环。
明明输入的开机密码是对的,但就是一直提示“无法验证您的密码”,进不了系统。更严重的情况是笔记本将反复重启。
一台好好的笔记本怎么突然就“变砖”了呢?
原来都是Chrome OS一次悄悄自动更新惹的祸。
由于ChromeOS是开源的,一位Reddit网友仔细系统更新的代码,发现其中的低级错误令人哭笑不得。
![谷歌程序员少输一个“&”,差点让全球Chrome笔记本变砖](https://s6.51cto.com/oss/202107/26/396749849265672670de55dea489a697.jpg)
少一个“&”惹的祸
这位网友仔细对比两份代码后发现,这个“惊天大bug”背后竟然只是谷歌程序员少输了一个字符“&”。
原本正确的代码应该是:
- if (keydata.hasvalue() && !key_data->label().empty())
而这位程序员却这句if语句写成了。
- if (keydata.hasvalue() & !key_data->label().empty())
“&&”和“&”两个运算符虽然看起来只差一点点,但二者作用真是天壤之别。
前者是对两个变量求“与”(AND),而后者是对这两个值按位求与。
这样就导致了条件语句两边变量每一位都会被求与,即使has_value()为真,返回结果也不一定就是真。
而这串代码是Chrome OS中保存用户加密密钥的部分,由于这个错误,系统无法验证将存储的密钥与输入密码进行比较,就出现了尴尬的一幕。
接到用户的反馈后,谷歌迅速发布了91.0.4472.167更新来解决该问题。
如果你的Chrome笔记本只是无法进入当前账户,那么可以先尝试安装最新更新,而不会丢失文件。
如果你的笔记本无线重启,就只能回复出厂设置然后再接收更新了,数据也会全部丢失。
没测试就发布,着实离谱
堂堂互联网大厂竟犯如此低级错误,这令不少Chromebook用户感到愤怒:
谷歌的测试团队这两个月是休假了吗?
![谷歌程序员少输一个“&”,差点让全球Chrome笔记本变砖](https://s3.51cto.com/oss/202107/26/a6bed196489c44ab310e7065ba2bb9d4.jpg)
谷歌没有代码测试的吗?为什么会在没有测试的情况下把代码发布到生产环境。
![谷歌程序员少输一个“&”,差点让全球Chrome笔记本变砖](https://s3.51cto.com/oss/202107/26/be84f85d9de1f383d188d1b2ce05cc10.jpg)
Chrome OS过去一直“小错不断”,所以有些用户已经学得精明了:
我已经学会了等更新发布一段时间后再升级。
![谷歌程序员少输一个“&”,差点让全球Chrome笔记本变砖](https://s3.51cto.com/oss/202107/26/7a9dad72e935eba7dce6196f63657072.jpg)
真是没想到,代码少一个字符竟有这么大的破坏力。好在Chrome OS系统更新是分批进行,波及面也不算太广。
看到这个谷歌程序员的bug,你有没有想起自己犯过哪些低级错误呢?(比如把等于号“==”写成了赋值号“=”)
相关文章
- 在 Go 里用 CGO?这 7 个问题你要关注!
- 9款优秀的去中心化通讯软件 Matrix 的客户端
- 求职数据分析,项目经验该怎么写
- 在OKR中,我看到了数据驱动业务的未来
- 火山引擎云原生大数据在金融行业的实践
- OpenHarmony富设备移植指南(二)—从postmarketOS获取移植资源
- 《数据成熟度指数》报告:64%的企业领袖认为大多数员工“不懂数据”
- OpenHarmony 小型系统兼容性测试指南
- 肯睿中国(Cloudera):2023年企业数字战略三大趋势预测
- 适用于 Linux 的十大命令行游戏
- GNOME 截图工具的新旧截图方式
- System76 即将推出的 COSMIC 桌面正在酝酿大变化
- 2GB 内存 8GB 存储即可流畅运行,Windows 11 极致精简版系统 Tiny11 发布
- 迎接 ecode:一个即将推出的具有全新图形用户界面框架的现代、轻量级代码编辑器
- loongarch架构介绍(三)—地址翻译
- Go 语言怎么解决编译器错误“err is shadowed during return”?
- 敏捷:可能被开发人员遗忘的部分
- Denodo预测2023年数据管理和分析的未来
- 利用数据推动可持续发展
- 在 Vue3 中实现 React 原生 Hooks(useState、useEffect),深入理解 React Hooks 的