整理 | 郑丽媛

出品 | CSDN(ID:CSDNnews)

初学编程的程序员难免会犯一些低级错误,这不难理解。

可当这种低级错误出现在谷歌经过三个开发者版本进而推出的 Chrome OS 正式版中时,就很令人疑惑:谷歌连这么明显的错误都没有看出来吗?

上周,谷歌向 Chromebook 推送了一次 Chrome OS 版本更新,版本号为 91.0.4772.165,而这次更新引起了重大 Bug:只因代码中少打一个字符“&”,导致大量用户无法解锁登录 Chromebook

小版本更新引起重大 Bug

自 6 月份谷歌正式发布 Chrome OS 91 稳定版以来,似乎就一直大小 Bug 不断。

先是版本 91.0.4472.147 被用户反映 CPU 占用率太高,随后谷歌取消更新,使系统恢复到先前的 91.0.4472.114 版本,可这又引发了用户无法安装 Linux 的问题。

本以为这些问题已经够糟心了,可跟这次 91.0.4772.165 版本导致的后果相比,简直是“小巫见大巫”。

最早发现 Chrome OS 91.0.4772.165 版本有问题的是网友 @u/rk_29,TA 在 Reddit 网站上发布了一则消息:

警告:最新的稳定版更新正在阻止用户登录。我们建议你在进一步通知之前不要更新该版本。

这则消息引来了众多 Chromebook 用户的关注,其中不少人因已更新而“遭殃”。有一位 Reddit 用户说,在更新至 91.0.4772.165 版本后,他们的两台 Chromebook 就无法顺利登录了

不仅登录界面无法识别正确账密,两台电脑状态也很不好。一台笔记本电脑陷入重启循环,另一台 Asus Chromebook C436 即便是采用 Powerwash(即强制重置为出厂状态,将 Chromebook 上存储的所有本地用户数据清除)也没办法解决问题,最终只能用 U 盘来让系统恢复到可用状态。

这样的恢复方式未免代价也太过重大,因此彼时最好的建议就是暂时不要进行版本更新。如果 Chromebook 用户在系统托盘中收到更新提示,千万不要关闭电脑,否则 Chrome OS 会在开机时自动更新至有巨大 Bug 的 91.0.4772.165 版本。

但正如有人向来不喜欢最新系统,也有那么一部分人就是习惯及时更新,因而这次 Chrome OS 更新导致的 Bug 使许多人都“中招”了。突然无法正常登录的电脑极大影响了他们的工作生活,为此不得不重装系统丢失重要文件的也不在少数,由此惹怒了许多用户。

只因缺少一个字符“&”

这个版本引起的混乱自然引起了谷歌的注意,它迅速删除了 91.0.4472.165 版本,并将 Chromebook 的系统版本退回至 91.0.4472.147,虽然这个版本也不是太安全,但起码用户可以登入电脑了。

谷歌在 20 日的声明中说已经确定了问题所在,将于 21 日发布修复程序。而对于担心数据丢失的受影响用户来说,如果能等到 21 日谷歌的修复版本,待设备自动更新就无需通过 Powerwash 实现登录。

随后谷歌按时推出了修复版本 91.0.4472.167,这应该也是谷歌对这次重大事故给出的最终解决方案。只要 Chromebook 系统更新至此新版本,用户就可以顺利登入电脑进行正常操作。

虽然表面看来,91.0.4772.165 版本引发的问题到这里就告一段落了,但好奇心驱使人进行更深一步的探索:这么重大的 Bug 到底是由什么引起的?

所幸 Chrome OS 是一款开源的操作系统,因此一切都有迹可循。一位 Reddit 用户 @elitist_ferret 就在其源码中疑似发现了问题所在:只因少打了一个字符“&”。

谷歌将 Chrome OS 的 Cryptohome VaultKeyset 中的一个条件语句写错了,而这正是操作系统中保存用户加密密钥的关键部分。这一行原本应该是

if (key_data_.has_value() && !key_data_->label().empty()) {

引发重大 Bug 的 91.0.4772.165 版本中这部分却少打了一个“&”(C++ 中逻辑与“AND”运算符的正确写法为“&&”),这就导致了 Chrome OS 无法解密登录信息:

if (key_data_.has_value() & !key_data_->label().empty()) {

网友:谷歌没有 QA 测试吗?

这种错误实在太过低级,尤其是出现在谷歌通常要经过三个开发者测试版才推出的稳定版系统更新时,就显得更加匪夷所思。

众多网友对这个低级错误引起的巨大 Bug 也感到非常疑惑

“这怎么能通过质量保证流程?谷歌是在没有进行 QA 测试的情况下就将代码发布推送了吗?”

“谷歌取消质量检查了?”

“测试时怎么会找不到这个 Bug ?!这让我觉得谷歌没有像我对操作系统制造商所期望的那样拥有强大的设备+足够的测试。”

有网友猜测这可能是因为三个开发者版本的代码都不同

“我猜谷歌不会在测试过程的每个版本中都推送完全相同的代码。从 beta 到正式推送的期间,有人可能进行了手动更改以适应新环境,然后意外删除了一个不应该被触及领域的字符。不过谷歌还是应该在发布更新之前审查测试版和稳定版之间的所有更改。”

有网友庆幸自己没有及时更新系统的习惯

“这就是我讨厌强制更新的原因。一般像我这样经验丰富的 IT 专业人士选择更新时,通常是在一大群人都更新了并且没有报告任何问题之后。”

而这种低级错误也对谷歌产生了一定的负面影响

“谷歌在向我们展示这就是为什么 Chrome OS 还没有准备好迎接黄金时段。”

“我猜谷歌会说:是实习生的错。相信我们,真的是实习生的错。”

“我现在更没有理由也更不想使用 Chromebook。”

那么对谷歌这次因更新引起的重大 Bug,你有什么看法吗?

参考链接:

  • https://arstechnica.com/gadgets/2021/07/google-pushed-a-one-character-typo-to-production-bricking-chrome-os-devices/?comments=1

  • https://www.androidpolice.com/2021/07/20/a-new-chrome-os-91-update-is-breaking-chromebooks-like-a-bull-in-a-china-shop/

  • https://www.reddit.com/r/chromeos/comments/onlcus/update_it_seems_google_has_pulled_the_165_stable/?sort=top

☞程序员带半箱辣条参加东京奥运,网友:这不是辣条,是狗粮!
☞当所有人都向往大厂时,这些 00 后程序员却选择逃离
☞字节跳动、阿里等大厂的真实工作体验如何?5 位程序员的自述
☞中国 47% 程序员使用 Java、薪资中值达 21000 美元,揭晓 2021 开发者生态系统现状!
☞芯片龙头出大招!向梁孟松等 3944 名员工发 13 亿,每人到手超 34 万

谷歌程序员犯低级错误?少打一个字符引发重大 Bug,致大量 Chromebook 无法解锁...相关推荐

  1. 谷歌开发团队犯低级错误?

    本文转载自 InfoQ 不知道这几天 Google 对于检查拼写的重要性,是否有了新的认识呢? 近日,Google 在短暂上线了一版 Chrome OS 更新后又迅速将其撤掉,原因是某行代码里少打的一 ...

  2. 程序员犯的错误都这么屌吗?

    西雅图IT圈:seattleit [今日作者]栗头蓝 一个充满人文情怀的 web前端相声演员 程序员和他们的错误合集 1 你一个电脑怎么这么屌啊? "无法复制文件,原因:就不". ...

  3. 谷歌程序员少输一个“”,差点让全球Chrome笔记本变砖

    晓查 发自 凹非寺 量子位 报道 | 公众号 QbitAI 代码只是少了一个字符,后果竟如此可怕. 上周,一些使用Chrome OS笔记本的用户发现,一旦重启笔记本,就将陷入了无法登录的死循环. 明明 ...

  4. 编程一直犯低级错误怎么办_大多数学生在学习编程时犯的错误

    编程一直犯低级错误怎么办 We grew up hearing that every individual is different, but surprisingly, I have seen hu ...

  5. 谷歌程序员年薪高达25万美元以上

    最近,我有幸地见到了我的前雇员.距离上一次见面已经有好几年了,在与他的交谈中得知,他现在效力于谷歌,做一名程序员. 他与我交谈中提到薪资问题,他表示:"关于论坛上谷歌薪资的数据有很多错误,我 ...

  6. 深圳传奇打工妹,从流水线女工逆袭成谷歌程序员,如今年薪150万

    生活中有一句很励志的话,无论何时出发都不晚,只要有心迎难而上,终会收获自己想要的人生! 这句话用在孙玲身上,可以说是再合适不过,她从一名流水线女员工,一路逆袭成谷歌程序员,如今年薪高达26万美元,相当 ...

  7. 中国程序员容易发音错误的单词

    中国程序员容易发音错误的单词 单词 正确发音 错误发音 access ? ✅ ['ækses] ❌ [ək'ses] admin ? ✅ ['ædmɪn] ❌ [ɜ:d'mɪn] agile ? ✅ ...

  8. 高级程序员和低级程序员的区别

    低级程序员认为自己与高级程序员的区别, 主要是高级程序员任何功能都能编码实现, 编码速度快, 代码无 bug. 正如一惯的那样, 低级程序员之所以低级, 正是因为他们勉强能看到(或者根本看不到)事物的 ...

  9. 从月薪2300女工到年薪70万谷歌程序员:人生,永远不要给自己设限

    孙玲,一个从月薪2300的流水线女工到谷歌程序员的女性,她的人生经历告诉我们,你想成为什么样子,过上什么样的生活,关键在于自己的选择,而选择过后还要有强大的意志力和执行力.异于常人的努力和勇气,用了十 ...

最新文章

  1. RibbitMQ 大数据分布式下的消息队列思
  2. 【网址收藏】华为荣耀V9(DUK-AL20)刷机包下载
  3. MySQL的基本语法
  4. python从入门到实践 第12章 武装飞船 之 调整飞船的速度程序实践
  5. fiddler修改response header
  6. HALCON示例程序color_fuses_lut_trans.hdev通过颜色对保险丝进行分类
  7. JavaScript匿名函数与托付
  8. 谷歌将推出新版Pixel 4a 5G:搭载骁龙765G处理器 售价下降至3200元
  9. Kicad安装与配置_Windows
  10. csdn官网(csdn官网免费下载)
  11. 汇编----正确区分LJMP、AJMP、SJMP、JMP跳转指令
  12. 每个国家对应的values语言Locale和国家代码对照表
  13. python方差分析样本量太大_十五、方差分析--使用Python进行单因素方差分析(ANOVA)...
  14. 安卓后门工具:backdoor-apk 教程
  15. 图像扭曲(仿射变换)
  16. 工具|2021年十大扫描漏洞工具
  17. word保存html格式批注没有了,word批注不见了 怎么显示批注
  18. uni-app离线打包遇到的坑
  19. 打开电脑自带字符映射表
  20. QT篇之QT布局与设计师

热门文章

  1. MobileViT: 一种更小,更快,高精度的轻量级Transformer端侧网络架构(附代码实现)...
  2. what???现在的研究生和导师普遍都没有真正理解科研的本质
  3. KDD2020接受论文列表已公开!338篇优秀论文汇总!
  4. 2020年,图机器学习的趋势有哪些?
  5. SAP QM中阶之动态修改规则创建
  6. SAP S4HANA 介绍LTMC的文章链接
  7. 自动驾驶是汽车行业的未来 但这并不代表驾驶者能完全解放双手
  8. 机器学习系统的弱点:需要保护它们的5个原因
  9. 一文了解卷积神经网络基础,建议收藏
  10. 3招打破机器学习工程师的边界