IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

一个空格引发的惨剧

酷壳 - CoolShell.cn 2011-06-20 13:35:54 累计浏览 4,511 次
本机暂存

   你是否相信如果你的程序里没有检查一个变量会导致怎么系统瘫痪?无论你相不相信,这是我一个亲身经历过的案例,你可以在本站的程序员那些悲催的事儿中找到很多这样的事。这样的事昨天在发生,今天同样在发生。Unix40多年了,在这40年里,程序员发生过各种各样的的惨剧,但是大多数的事情一而再再而三的重演。

   今天的你,可能在开发者各种各样NB的系统,你会相信你的一个空格也能导致系统瘫痪吗?也许你可能很难相信这个事。不过,再下面这个事将告诉你这个血淋淋的事实 ―― 一个空格产生的bug可以让你的系统瘫痪。

   bumblebee是一个开源项目,这个名字也就是变形金刚里的大黄蜂,这个项目是这样介绍自己的――

   bumblebee is Optimus support for Linux, with real offloading, and not switchable graphics.. More important.. it works on Optimus Laptops without a graphical multiplexer..

   Optimus 是NVIDIA的“优驰”技术,其可以将您的笔记本电脑PC提升到绝佳状态,提供出色的图形性能,并在需要时延长电池续航时间。这个项目是把这个技术移到Linux上来。

   这个项目本来不出名,不过,程序在其安装脚本install.sh里的一个bug让这个项目一下子成了全世界最瞩目的项目,这个bug的fix如下:

@@ -348,7 +348,7 @@ case "$DISTRO" in
-  rm -rf /usr /lib/nvidia-current/xorg/xorg
+  rm -rf /usr/lib/nvidia-current/xorg/xorg

   看明白了吗?空格。这个空格会导致什么样的问题呢?呵呵。你有没有感到菊花一紧?这个bug绝对的霸气外露!真是验证了“如何写出无法维护代码”的那句话――“测试你的程序是一种懦夫的行为”。

   不过,最精彩还不是这个bug,而是全世界程序员的对这个bug 的 code review comments,真的相当的欢乐。请强势围望!

https://github.com/MrMEEE/bumblebee/commit/a047be85247755cdbe0acce6#diff-1

重点是其中的很多图片――下面的图片众多。



clip_image002

clip_image007

clip_image010

clip_image011

clip_image012

clip_image014

clip_image016

clip_image019

clip_image020

clip_image021


同分类推荐文章

  1. 科技爱好者周刊(第 401 期):如何赚到10亿美元 (2026-06-26 08:05:38)
  2. 如何做决策 - 从 Go 的一个 issue 说起 (2026-06-26 08:00:00)
  3. Seven Player:Windows上播放115网盘视频的增强工具 (2026-06-09 00:06:47)

查看更多 开发者 文章 →

建议继续学习

  1. 调试工具之GDB (累计阅读 14,829)
  2. colortail,让 tail 命令绚丽起来 (累计阅读 10,259)
  3. Linux知识:为什么要用字符~来表示home目录 (累计阅读 6,900)
  4. C 语言的前世今生 (累计阅读 6,193)
  5. 如何向外行人解释什么是内存溢出 (累计阅读 5,819)
  6. 使用Shell快捷键助你一臂之力 (累计阅读 5,476)
  7. 《Linux/Unix 设计思想》的翻译细节讨论 (累计阅读 5,011)
  8. 用Unix的设计思想来应对多变的需求 (累计阅读 4,913)
  9. Nginx的master和worker进程间的通信 (累计阅读 4,819)
  10. Unix考古记:一个“遗失”的shell (累计阅读 4,583)