|
|
|
|
移动端

世界最著名的四大Bug

我在做校园的邮件系统管理员的时候,有用户向我抱怨说:他们不能发送超过500英里距离的email…如果你之前没有听过这个故事。如果你就是这个管理员。此刻是否一脸懵逼。

作者:佚名来源:程序师|2018-01-03 12:57

年前最后一场技术盛宴 | 1月27日与京东、日志易技术大咖畅聊智能化运维发展趋势!


  • “电子邮件无法发送到 500 英里以外”

Bug界最经典的传奇之一

我在做校园的邮件系统管理员的时候,有用户向我抱怨说:他们不能发送超过500英里距离的email…

如果你之前没有听过这个故事。

如果你就是这个管理员。

此刻是否一脸懵逼。

补充材料:

用户中有位地理统计人员,还添油加醋地制作了一张邮件发送失败地图,地图上显示,她邮件的送达区域半径比500英里就多那么一点点:半径内的收件人,全收到了,之外的,全失败了。

图0:世界最著名的四大bug

请给出你的debug plan。

别说是邮票没贴够。

真相:

一次软件升级导致远程服务器超时时间被设为0。在一个具有典型负载的特定机器上,零超时意味着如果连接时间稍微超过3毫秒,服务器就会终止连接。而以光速传播的电信号,在3毫秒的时间内所能到达的距离大约是:

  • 0.003 * c (光速) = 558.84719 miles

“只有在星期三才会崩溃的系统”

Bug界最经典的传奇之二

一家医院用来监控病人健康的数据库,每到周三,会自己崩溃。

我在周三的时候通常也会崩溃。

因为那天有组会。

但我感觉这应该不是这道问题的答案。

补充材料:

该事件中,最大的难度在于,一周只有一天有机会debug。

该系统记录日志是用 C 风格的代码编写的,把日志字符串记录到了一个固定长度的缓冲区中,其中日志时间一栏,格式例如“Monday, July 17, 1997, 10:38:47.123“。

请给出你的debug plan。

真相:

图1:世界最著名的四大bug

因为周三的日志的时间一栏,缓冲区恰好溢出了。

(就差一个字节写不下)

不会有来自星星的bug

也没有哪个bug是太阳的后裔

所有那些你认为的、不惜穿越过时空,

来与你情定今生的bug

都特么是你曾经的二比惹的祸

图2:世界最著名的四大bug

故事继续。

“当我坐在窗边的时候,内存读写就会失败”

Bug界最经典的传奇之三

给一个自己设计的SD卡控制器写驱动,从五月开始调试,一直很顺利,到了七月份突然开始出现间歇性的SD卡读写失败,而且越靠近窗户,失败频率越高。

也许坐在窗前写程序,

本身就是一个错误

每次我坐在窗前的时候,

都会想

隔壁班的

那个女孩

怎么还没经过我的窗前

补充材料:

驱动程序是要下载到控制器的板子上的。当这块板子放置于窗边,特别是正午的时候,调试几乎总是失败。

请给出你的debug plan。

真相:

电路板上芯片的正常工作温度有限,当超过一定的温度时它就带不动负载了,而7月的正午,太阳正好会通过窗户会照到板子,导致温度过高。

  • “摇动游戏手柄的时候,游戏存档就会失败”

Bug界最经典的传奇之四

在开发PS1游戏“袋鼠大进击”这款游戏的存档/读档时候遇到的。Bug的症状是每隔一段时间存档/读档都会超时失败。并且十分随机。

像我这种游戏从来都是一命通关的人

其实不是很在乎能不能存档的

补充材料:

该事件中的难点在于重现bug。当开发人员把可能出错的代码已经注释到了四大皆空的时候,bug依然随机出现。偶然间,测试发现了快速重现Bug的方法:一边摆动手柄,一边存档。

请给出你的debug plan。

真相:

PS的时钟在高频率下运行时,会影响到主板旁边的晶振,造成手柄控制器的内存卡控制器之间的串扰。手柄上一有信号,内存就被干扰了。

最后给出一个真实的灵异故事。

(转自知乎)

某公司有个码农工作压力太大,天天晚上加班到半夜,最后受不了跳楼死了,他的机位从此就一直空着。但令大家都感到非常奇怪的是,有几次早上来上班时却发现这台机子竟然开着!大概是因为电源有问题吧,但这个项目经理是个疑神疑鬼的人,每次经过这里都绕着走。

到了新一届招人,一个女孩被分到这个项目组。项目经理让她坐这个空着的机位,谁也没敢告诉她之前的事,只是让她接手原来同事的工作。过了没几天,她写的代码被测出来一个bug,可她水平确实比较差,怎么都调不通。她又不敢问同事,只好向男友求助(她男友是另一家公司的大牛)。男友说现在很忙,晚上10点以后才有空。 那天她只好等到晚上10点,男友终于有空了。这时公司里只剩下她和项目经理两个人。

她男友通过远程桌面帮她调试的时候,她要去个厕所便起身离开了坐位。过了一会项目经理下班回家,经过这里时用余光看到屏幕的上的代码好像在动!他定睛一看,屏幕上的代码正在一行一行的往下写,可是机位上并没有人!!!

图3:世界最著名的四大bug

第二天这个项目经理没来上班,而是给HR发了封邮件,提交了辞职申请。

以上就是一个程序员版的田螺姑娘的故事。

【编辑推荐】

  1. 10个JavaScript常见BUG及修复方法
  2. Node.js中遇到含空格URL的神奇“Bug”——小范围深入HTTP协议
  3. Go运行时,对bug的分析调试过程解析
  4. 程序员从复杂代码中找BUG的5种方法,你用过几个?
  5. 哪种编程语言最容易出bug?
【责任编辑:未丽燕 TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

《网管员必读——网络管理》

本书在全面介绍微软最新网络操作系统Windows Server 2003的基础上,简要地介绍了UNIX和Linux两大操作系统的代表产品:Sun(太阳)公司的Sol...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊