Bug Saga

记录那些让程序员哭笑不得的传奇Bug

千禧虫危机

来源:历史事件 1999年
1999年,全世界的程序员都在为一个看似简单的问题焦头烂额:年份只用两位数字存储。当2000年到来时,系统会将'00'识别为1900年,导致银行、航空、电力等关键系统可能崩溃。最终,经过数十亿美元的投入和无数程序员的通宵奋战...
阅读全文 →

NASA的火星气候探测者号

来源:NASA事故报告 1999年
1999年,NASA价值1.25亿美元的火星气候探测者号在接近火星时神秘失踪。调查发现,导航软件在计算推进器力度时,一个团队使用英制单位(磅力),另一个团队使用公制单位(牛顿),却没有进行转换。这个单位换算错误导致探测器以错误的角度进入火星大气层...
阅读全文 →

空指针的代价

来源:Tony Hoare自述 1965年
1965年,计算机科学家Tony Hoare在设计ALGOL W语言时引入了空引用(null reference)的概念。他后来称这个决定为"十亿美元的错误"。几十年来,空指针异常(NullPointerException)导致了无数系统崩溃、数据丢失和安全漏洞...
阅读全文 →

Therac-25放射过量事故

来源:医疗事故报告 1985-1987年
1985年至1987年间,加拿大AECL公司生产的Therac-25放射治疗设备因软件缺陷导致至少6名患者接受了致命剂量的辐射。这个软件bug是由竞态条件引起的:当操作员快速修改治疗参数时,系统会进入不安全状态,给出远超安全剂量的辐射...
阅读全文 →