臭名昭著谋财害命的BUG们

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

技术分享臭名昭著、谋财害命的计算机系统BUG们BUG1:万“虫”之母,史上留名万“虫”之母,史上留名•1947年9月9日下午3点45分,GraceMurrayHopper在她的记录本上记下了史上第一个计算机Bug——在HarvardMarkII计算机里找到的一只飞蛾,她把飞蛾贴在日记本上,并写道”Firstactualcaseofbugbeingfound”。•这个发现奠定了Bug这个词在计算机世界的地位,变成无数苦逼程序员的噩梦。从那以后,Bug这个词在计算机世界表示计算机程序中的错误或者疏漏,它们会使程序计算出莫名其妙的结果,甚至引起程序的崩溃。GraceMurrayHopper是历史上最早一批程序员,而且还是个女程序员,服役于美国海军,官至准将。•这是流传最广的关于计算机Bug的故事,可是历史的真相是,Bug这个词早在发明家托马斯·爱迪生的年代就被广泛用于指机器的故障,这在爱迪生本人的1870年左右的笔记里面也能看得到。而电气电子工程师学会IEEE也将Bug这一词的引入归功于爱迪生。万“虫”之母,史上留名BUG2:千年虫,炒作营销的狂欢千年虫,炒作营销的狂欢•在上个世纪,软件业者从来没想过他们的代码和产品会跨入新千年。因此,很多软件业者为了节省内存省略掉代表年份的前两位数字19,或者默认前两位为19。•而当日历越来越接近1999年12月31日时,人们越来越担心在千禧年的新年夜大家的电脑系统都会崩溃,因为系统日期会更新为1900年1月1日而不是2000年1月1日,这样可能意味着无数的灾难事件,甚至是世界末日。•到今天,我们可以调侃这个滑稽的故事,因为核导弹并没有自动发射,飞机也没有失控从天上掉下来,银行也没有把国家和用户的大笔存款弄丢。•千年虫Bug是真实的,全球花了上亿的美金用来升级系统。而且,也发生了一些小的事故:在西班牙,停车场计费表坏了;法国气象局公布了19100年1月1日的天气预报;在澳洲,公共汽车验票系统崩溃。就这样而已。最后盘点的结果是软件公司赚了大钱,八卦小报销量大增,很多程序员的千禧年夜party泡汤了,几个中国文盲老太太被人骗了养老金,不可谓不严重。千年虫,炒作营销的狂欢BUG3:宰赫兰导弹事件(毫秒的误差)宰赫兰导弹事件(毫秒的误差)1.在1991年2月的第一次海湾战争中,一枚伊拉克发射的飞毛腿导弹准确击中美国在沙地阿拉伯的宰赫兰基地,当场炸死28个美国士兵,炸伤100多人,造成美军海湾战争中唯一一次伤亡超过百人的损失。2.在后来的调查中发现,由于一个简单的计算机bug,使基地的爱国者反导弹系统失效,未能在空中拦截飞毛腿导弹。当时,负责防卫该基地的爱国者反导弹系统已经连续工作了100个小时,每工作一个小时,系统内的时钟会有一个微小的毫秒级延迟,这就是这个失效悲剧的根源。3.爱国者反导弹系统的时钟寄存器设计为24位,因而时间的精度也只限于24位的精度。在长时间的工作后,这个微小的精度误差被渐渐放大。在工作了100小时后,系统时间的延迟是三分之一秒。4.对一般人来说,0.33秒是微不足道的。但是对一个需要跟踪并摧毁一枚空中飞弹的雷达系统来说,这是灾难性的。侯赛因飞毛腿导弹空速达4.2马赫(每秒1.5公里),这个”微不足道的”0.33秒相当于大约600米的误差。5.在宰赫兰导弹事件中,雷达在空中发现了导弹,但是由于时钟误差没有能够准确地跟踪它,因此基地的反导弹并没有发射。宰赫兰导弹拦截过程BUG4:公尺还是英尺?火星气候探测者号的星际迷航公尺还是英尺?火星气候探测者号的星际迷航•火星气候探测者号在1997年发射,目的为研究火星气候,但是它没有能够达成这项花费3亿多美元的使命。探测者号在太空中飞行几个月以后,由于导航错误,最终在火星大气层解体。•探测器的控制团队使用英制单位来发送导航指令,而探测器的软件系统使用公制来读取指令。这一错误大大改变了导航控制的路径。最后探测器由于进入过低的火星轨道(大约100公里误差),在过大的火星大气压力和摩擦下解体。BUG5:花费4亿美金的阿丽亚娜5型烟花,昂贵的简单复制花费4亿美金的阿丽亚娜5型烟花,昂贵的简单复制•程序员在编程时必须定义程序用到的变量,以及这些变量所需的计算机内存,这些内存用比特位定义。•一个16位的变量可以代表-32768到32767中间的值。而一个64位的变量可以代表−9223372036854775808到9223372036854775807中间的值。•1996年6月4日,阿丽亚娜5型运载火箭的首次发射点火后,火箭开始偏离路线,最终被逼引爆自毁,整个过程只有短短30秒。•阿丽亚娜5型运载火箭基于前一代4型火箭开发。在4型火箭系统中,对一个水平速率的测量值使用了16位的变量及内存,因为在4型火箭系统中反复验证过,这一值不会超过16位的变量,而5型火箭的开发人员简单复制了这部分程序,而没有对新火箭进行数值的验证,结果发生了致命的数值溢出。•发射后这个64位带小数点的变量被转换成16位不带小数点的变量,引发了一系列的错误,从而影响了火箭上所有的计算机和硬件,瘫痪了整个系统,因而不得不选择自毁,4亿美金变成一个巨大的烟花。花费4亿美金的阿丽亚娜5型烟花,昂贵的简单复制BUG6:WIN98发布会上蓝屏WIN98发布会上蓝屏1.蓝屏死机成为了微软WINDOWS操作系统的标志,这也是最令微软尴尬的事情之一,当年比尔·盖茨在WINDOWS操作系统98的发布会上就亲自经历了演示机蓝屏死机的场面。蓝屏死机英语是BlueScreenofDeath,缩写为BSoD。2.蓝屏死机是指微软WINDOWS操作系统操作系统在无法从一个系统错误中恢复过来时所显示的屏幕图像。3.造成蓝屏死机的原因有很多,可以分为软件和硬件两种,软件方面的原因主要是DLL多个版本不兼容引起的,这也能够解释为什么刚刚重装的WINDOWS操作系统系统比使用一段时间的WINDOWS操作系统系统更稳定,这从另一方面也说明WINDOWS操作系统遇到解决不了的问题就重装系统不是没有道理的。4.硬件方面的原因则包括过热、超频不当、接触不良、元器件损坏、BIOS设置不当等等,根据蓝屏界面所提供的错误代码未必能够迅速查到蓝屏的原因,往往需要通过多次试错才能查出原因。5.蓝屏在WINDOWS操作系统9.X和WINDOWS操作系统ME系统中比较常见,在其后的WINDOWS操作系统NT内核的系统中已经少见多了,尤其是到了WINDOWS操作系统7乃至WINDOWS操作系统8中,就很难看到蓝屏了,Windows8还对蓝屏界面进行了优化,被称为最优雅的蓝屏。WIN98发布会上蓝屏视频地址::迪士尼的狮子王迪士尼的狮子王•在1994年的秋天,迪士尼公司发布了它给孩子们的第一款多媒体光盘游戏,狮子王动画故事。尽管很多其它的公司已经做了多年的儿童游戏的市场推广,这是迪士尼的第一次尝试,并大肆促销及广告推介。销量巨大。在那个节日期间,是孩子们的“必买游戏”。结果却是一败涂地。•在12月26日,圣诞节的第二天,迪士尼的客户服务热线开始响个不停。很快,负责电话支持的技术人员被来自愤怒的父母和哭喊的孩子们的电话淹没了,软件不能工作。报纸和电视出现了无数的故事。•造成该问题的原因是,迪士尼当时没有在市场上买到足够的不同型号的PC机并在这些机器上做兼容性测试。狮子王CD光盘软件只在少数一些系统中进行过测试。并且迪士尼的软件工程师们用来开发游戏的系统也不是一般大众所拥有的常用的系统BUG8:Intel奔腾浮点除BUG(FDIV缺陷)Intel奔腾浮点除BUG1.1994年10月30日,Lynchburg(佛吉尼亚)学院的ThomasR.Nicely博士在他的一个试验中追踪到一个未曾预期的结果,是在他的奔腾PC的一个除法问题引起的不正确答案。2.他将发现发到了Internet上,很快,引发了狂风烈火,无数人重现了他发现的问题,并发现了其它会产生错误答案的情形。幸运的是,这些情况很少见,只在极端的大量数学、科学和工程计算中会导致错误结果。大多数人在报税和运行业务时从不会遇到这类问题。3.这一事件引人注目的不是bug本身,而是Intel处理这一情况的方式:•在芯片发布之前,Intel的工程师在测试中就发现了这个问题。Intel的管理层觉得问题没有严重到足以确保修复,甚至公开它。当bug被发现之后,Intel试图通过媒体和公开声明减小问题被认为的严重性。•在后期迫于压力,Intel提出更换有问题的芯片,但是却只针对能证明被这个bug影响的用户。Intel奔腾浮点除BUG4.于是群情激怒,Intel的新闻组塞满了愤怒的客户,要求Intel解决这一问题。各类八卦新闻将Intel描绘成对客户漠不关心和不应该被信任的公司。最终,Intel为此事进行了慎重的道歉,并花费了4亿多美元更换所有有问题的芯片。5.经过这次惨重的损失后,Intel都会在它的网站上报告已知的问题,并小心关注客户的反馈该bug与技术无关,是管理层屁股决定脑袋的错误决策导致的严重后果BUG9:NASA火星极地登陆器NASA火星极地登陆器1.1999年12月3日,NASA的火星极地登陆器试图在马丁表面着陆时消失了。失败审查委员会调查了失败原因并认定发生故障最可能的原因是一个数据位未按预期设置而引起的。但令人纳闷的是为什么问题没有在登陆器的测试过程中发现。2.理论上,登陆器着陆的计划如下:•当登陆器落到火星表面时,它会打开降落伞以减缓下降的速度•降落伞打开几秒钟后,登陆器的三个腿会迅速伸展开并锁定到位,用于着陆。•当登陆器离火星表面1800米时,它会释放降落伞并点火推进器,慢慢下降到火星表面。3.为了省钱,NASA简化了判断何时关闭推进器的机制。他们取代了用于其它航空器上的昂贵的雷达。在登陆器的腿脚上安装了便宜的触点开关。当触点开关碰到地的时候,就设置程序中的触地位,命令登陆器关闭燃料和发动机NASA火星极地登陆器4.不幸的是,失败审查委员会在测试中发现。大多数情况下,用于着陆的腿会迅速展开,展开动作引起的机械震动也会触动开关并设置触地位,命令着陆器关闭推进器非常可能的情况是着陆器在还没完全着陆时由于机械震动触发触点开关提前关闭了推进器,登陆器直接从1800米的高空摔到了火星表面,成为了碎片5.结果是灾难性的,但背后的原因却很简单。因为在研发登陆器的过程中,登陆器的测试任务被分配到了多个小组。一个组测试了腿的打开过程,另一个组测试了在那之后的着陆过程第一个组从没有检查触地位是否设置,那不是他们的范围;第二个组在开始测试之前,总是重置触地位两个部分单独工作非常完美,但一起工作BUG就来了该BUG与技术强相关,项目设计时,未充分考虑情况,测试用例覆盖范围不彻底BUG10:谋财害命的Therac25放射治疗仪谋财害命的Therac25放射治疗仪Therac系列仪器是由加拿大原子能有限公司(AECL)和法国CGL公司联合制造的一种医用高能电子线性加速器,用来杀死病变组织癌细胞,同时使其对周围健康组织影响尽可能降低。射线治疗肿瘤技术起源于20世纪60年代,Therac25属于第三代医用高能电子线性加速器,具有两种工作模式。其一是加速电子模式,用来治疗相对较浅的病变。其二是X射线模式,这种模式,将25兆电子伏特的电子束,转化为X射线,用来治疗较深度的病变。Therac25一共售出了11台,5台配置在美国,6台在加拿大,1985年至1987年共发生了6次放射剂量大规模超标的严重事故,全部设备于1987年召回。对原设计方案作了重大修改,其中包括安装防止软件错误的硬件保护装置。谋财害命的Therac25放射治疗仪下面是这6次事件中的4个事件:1.1985年6月,一名61岁的妇女,到Marietta的Kennestone肿瘤中心接受锁骨部位的10兆电子伏特电子射线照射,治疗中病人感到炙热和疼痛,大声喊叫,医生TimStill无法解释,怀疑与过量辐射有关,并与AECL电话联系。AECL工程师答复称设备没有发生

1 / 51
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功