自己编写的直棋游戏刚上架应用商店不久,一位用户来信反馈,这个程序存在一个低级 Bug:应该是白方先手,黑方后手,但程序弄反了。
刚看到来信,感觉有些难以置信,我很认真地给他回复了一封邮件,大意为:
我从苹果应用商店和 Google Play Store 上下载了42个直棋 app,统计表明其中28个 app 是黑方先行,14个 app 是白方先行,比例正好2:1,黑方先行是绝对主流。此外,大凡以黑白双方棋子不区分角色的棋种,比如围棋和五子棋,也是黑方先行,更符合习惯。
不料他回信给了一个链接,竟然是“世界直棋协会”官方网站的棋规 PDF 文件,并表示黑棋先行是违反标准棋规的。这让我大吃一惊,因为我原来一直以为直棋是世界各地的民间棋种,其中在中国,人们一般用石头和树叶之类的就可以玩,全国各地的变种棋规五花八门,我从未想过会有“世界直棋协会”这种奇怪的组织,感觉有些哭笑不得。这位用户解释到,直棋在欧洲和南非等地是正式比赛项目,有很多严肃玩家,有国家级以及世界的直棋协会,会组织国内以及世界范围的直棋锦标赛,并且还有等级分排名公布在网站。
我于是把之前统计的各个 app 黑方还是白方先行的情况再重新摸排了一遍,发现确实白方先行的 app ,总体制作质量相对更高一些,算是能印证白方先行是标准规则的说法。于是开始改代码。
这个 Bug 改完后造成了数以百计的零碎代码行被改动,然后很多测试需要回归,搞得特别头大。只能怪自己之前功课没做足。
由此也可知,随大流也有可能被带到坑里搞出意想不到的 Bug 出来。这次折腾算是被上了一课。
买打印机送电脑算啥。我这个是白送笔记本电脑,运费都没出。
我大概08年联想刷企业用户促销的时候,随大流买了一个thinkpad,在联想官网刷出来的,下的订单。
然后付款时候用的paypal,有大概150的折扣,整个机器不到800美元,很划算。当晚发货,给了快递号, 从中国发货。
但是,第二天邮件来了,paypal的,说我付款不成功,因为新用户还没认证,不能超过500块。
然后联想发email通知:这个订单取消了,我打电话给他们说我只是付款失败,现在已经弄好了,可以付款了,他们就说,那你得重新订一台。
我说,现在订,昨天的折扣就没了,那怎么办?他们说,没办法。我想,那就算了吧。
然后查了一下paypal,确实没扣款;再查了一下联想账号,订单号果然没了;再查了一下货运快递号, 已经改了新的送达目的地,往始发地向回运了。
本来以为就这样结束了,直到有一天收到email说:你的这个包裹被拒收。我心说我根本没拒收,不是发回商家的货栈了么?关我什么事儿?
然后我又去查了一下,发现目的地又诡异地改成了我,又从货栈开始朝我这里运了。一周多之后,居然收到了。
然后我打电话给联想销售,问这是怎么回事儿,打算交个货款就留下用吧,然后他们说:我们查不到订单号,没法收你的钱。
回头我打联想客服(他们销售客服当时是分开的,现在不知道)说明情况,说要不我给你退回去?他们说:你这个没有订单号,没有办法退,也没有地方退(没人会接收)。
我就只能留下用了2年多,然后很诡异地有一天收到了一封邮件:你的保修快过期了,要不要续订?
我打电话回去问,又说明了这个情况,客服直接说这个情况谁也不清楚,你想给钱我们也没法要,你要退机器也没人拿,但是,但是如果你要是坏了,我们还是给修,你要是购买延保,我们还是能卖。
我就满头黑线地买了延保,多少给点钱,求个心安。。这台机器我就花了一个延保钱用了5年。。很皮实。当然期间买了几台别的笔记本,并不是可着一台祸害。
所以联想财报不好我觉得挺理解:白给别人机器,别人要给钱还很傲娇地不要。这套订单系统的bug也就没谁了
工作这么多年,目瞪口呆的多了。我就讲一个前不久遇到的。
这里先提供一些名词解释,省得后面说故事的时候影响流畅性。没兴趣的可以直接跳过这段。
Win10在RS3加入了播放HDR视频的能力,用Edge开Netflix网站,只要账号允许,就能播放上面的HDR视频。此为前提。
接着,有人突然发现RS4上播放HDR视频,卡的要死要死要死,完全无法正常使用电脑。而同一台机器上,用RS3却没事。这很严重,说明是个regression,必须要在发布前修好。因为在RS3的时候,我曾经帮那人解决过一个视频播放的性能问题,所以理所当然他又找了我。我本来以为是因为Edge加了光照造成的,结果发现,我的光照并没有造成任何性能影响。而这个bug本身是个很深的坑。
首先是重现条件苛刻。我试了youtube上几个HDR视频,都没能重现。然后试了几个Netflix视频,发现都开不起来HDR。报bug的人说,必须用Netflix提供的测试账号才能打开HDR的功能。行了,能播放HDR了,但没有遇到bug描述的性能严重下降。又捣鼓了一阵子,才知道必须播放一个特定的视频才会重现:Chef's Table France。
行吧,就放这个视频。结果呢,还是没有重现。我就这么看啊看啊,看他们怎么和面,怎么切,怎么下锅。1天之后,bug?什么bug?学会法式摆盘才是最重要的。
好吧,第二天bug还得搞。我以前在别的贴子也说过,调bug这件事情,应该用科学的方法来处理。也就是,
那么咱们就按照这个路子来吧,看来是个硬骨头。
第一个条件比较明确,必须是i3的NUC。这是能支持HDR视频回放的最低端机器。比这个好的都没遇到这个bug。看来这个配置的机器正好处于边缘,这个bug造成的性能下降正好让这个机器卡死了。
接下来,奇怪的是,不是每回都能复现。看一小时视频也不见得会出现一次这个状况。但另一个同事却说,他能经常遇到。百思不得其解中,我到他办公室,看他是怎么复现的。一切看上去那么平常,同样的机器,同一段视频,他就能每次都看出来卡,我的就不能,这什么情况。一定是存在某个控制变量没有被发现。
既然这件事情跟机器和视频无关,难道是网络?当时我被临时分配到了open space,和别人共享网络出口。所以同一段视频,在我机器上只能到1080p和中等码率,而在办公室内可以到2k以上和高码率。经过进一步分析后发现,码率其实只是问题的一小部分。不同码率造成不同幅度的CPU耗用率上涨,虽然重要,但不是唯一的问题来源。
从内容上没辙了,我只能从操作上找问题。经过观察,发现我的操作方式是,在邮件里copy网址,新开一个Edge页面,把网址贴进去看视频。而我同事的操作方式是,最小化Edge页面,在邮件里copy网址,恢复Edge页面,把网址贴进去看视频。难道就是这么一个简单的操作区别造成了问题?我回到我的座位上,改用最小化的方式试了一下,果然每次都能复现!
好了,现在可以归纳出复现条件了:
而Chef's Table France正好符合2-4,所以成了复现的利器。而这第5点则成了我debug的突破口。既然最小化再恢复是个关键的控制变量,我就可以在这基础上频繁提假说了。
假说一,在最小化之前和恢复之后,一定有个状态变化,使得视频播放的代价增大许多。
经验告诉我,第一个要查的就是dirty region。于是用一个内部工具,把dirty region显示出来。果然,证实了我的假说。在窗口最小化之前,视频是通过MPO播放的,屏幕上并没有dirty region。在窗口最小化再恢复之后,整个视频区域都成了dirty region。
假说一得到证实。可以进一步追踪。
假说二,bug在MPO,MPO没有被启用。
内部工具是可以看MPO的区域的。打开之后发现视频区域有启用MPO。
假说二证伪。需要提新假说。
假说三,在有MPO的情况下仍然设置了dirty region。
同时打开dirty region和MPO,发现两者重叠。并且MPO虽然开着,但并没有往里填数据。DWM仍然是自己做混合,开着MPO但不用。
假说三证实。
假说四,视频部分被错误地设置成dirty region。
这是最头大的问题。因为在DWM里,dirty region的原因有几十种,又是通过消息驱动机制来做的,所以即便你看到dirty region了,也并不知道消息是从哪里来的。所以每次遇到dirty region的bug,大家都不愿意碰。因为这次的问题很窄,仅限于HDR视频。那就专门查因为HDR造成的dirty region吧。看了那部分代码,发现HDR metadata如果发生了变化,就会设置成dirty region。在那里下个断点,发现,在最小化之前,断点没有被hit到,最小化再恢复之后,每一帧都会hit到。
假说四证实。并且进一步narrow down到HDR metadata上。
假说五,是一个RS4对HDR metadata的修改造成的新bug。
比较了RS3和RS4在HDR部分的代码,发现RS3只支持HDR10,而RS4开始支持HDR10+。两者的metadata格式不同,HDR10的可以转化成HDR10+的。所以RS4的实现方法就是,不管输入是HDR10还是HDR10+,都转成HDR10+处理。这样简单很多,也不容易出问题。
在RS3里,HDR10视频是由DWM处理的,所以这个数据流的走向是
在RS4里,DX说,我在最后显示的时候也要用到metadata,所以DWM你别把metadata吃了,继续传给我用。于是,新的数据流走向就成了
行了,有了这些分析,事实慢慢浮出水面。这RS3和RS4的第四步不同,很可能就是原因。尤其是,之前是由DWM来清除metadata dirty,而现在又是在哪里清除的呢?
在代码里做了一系列的搜索,发现,没人清除!所以一但设置,就永远标记为changed,永远划分为dirty region。结果每次都需要DWM去处理整帧数据,性能就低下来了。具体来说,dxgkrnl里那段代码大概长这样:
bool changed = metadataDesc.metadata != oldMetadataDesc.metadata; if (changed) { metadataDesc.changed = true; ... }
这TM搞什么啊,一旦改变了,就万劫不复。非常明显的bug,就这么藏在kernel里好几个月,直到被我偶然发现。要不是有i3那种烂机器,估计还得不知道多久才能知道这里有问题。
所以要做实验就简单了,但修改kernel还是有点麻烦的,所以我的实验就在DWM里进行,拿到metadata后清除这个changed。实验里不用管DXGI怎么显示,因为不相关。结果果然解决了dirty region的问题,CPU耗用率也不再上升。
假说五证实,并且解决问题。
最后的修改还是在dxgkrnl里做的,把metadataDesc.changed挪到了if之外,一行而已。折腾这么一圈,从app到dxgi到kernel到dwm,连法式摆盘都学会了,结果是个弱智的bug。
各种奇葩的故障遇上过不少,不过最让我感到奇葩的是
很多年前有个电脑厂家叫新蓝电脑,主要销售区域是湖南。
大约在06年左右,有个单位采了一批新蓝的笔记本,当年的主流的上网方式还是ADSL。那一批电脑死活上不了网,装电信送的星空极速也拨不上网,自建宽带连接也无法拨号上网。反馈代码好像是691,服务器拒绝。
先排除软件故障,更换网卡驱动,更换操作系统,还是不能解决问题。
台台都有同样的故障也怀疑过是不是这批笔记本网卡是不是有问题。拿笔记本接路由器上网试了一下。但只要接上这台笔记本,整个局域网就奇卡无比。这就百思不得奇姐。
最后的最后,发现了问题的所在。这厂家,居然没给笔记本的网卡写入MAC地址。
真是叹为观止。
咋办,手工分配个地址给网卡呗。
同样的问题在几年后一个教师朋友的笔记本上也看到过。但那笔记本是打雷的时候。强电流顺着宽带击穿了猫,还同时击坏了笔记本的网卡。不配制MAC地址根本上不了网。
顺便说一下不知道能不能算BUG的BUG,ADSL时代,99%遭雷击损坏的电脑,都是通过电话线击穿猫,再顺着猫击坏网卡乃至主板甚至主板上所有其它设备。
原因倒也好解释,民用电的防雷击保护是相当好的。电话线也有防雷击装置。
户外的电信/铁通电线接线盒,在主线与出线中间,默认是有一层云母片的,如果发生雷击。瞬间就会把云母片烧穿达到绝缘效果来止进一步损失,这一段话是当年看这玩意的说明上看到的,也记不太清完整原理了。只是因为年久失修或其它什么原因,很多电话线接线桩上没有这玩意了。
结果就是一次雷击,就能击坏同个电信电话网里面的数量相当多的电脑、电话、猫。
顺便解释一下,每张网卡出厂的时候,都会分配一个独一无二的MAC地址,也称为物理地址。相当于网络里面这个网卡的名片。这个与ip地址是不一样的。
当然,ip地址可以引起冲突,mac地址如果相同也会引起网络冲突。以前红极一时的p2p终结者(想群殴哈哈。),还有arp病毒,都是靠伪装ip或mac地址来人为的制造冲突,把对方挤下线,或伪装对方来接收/发送数据。
想要修改也简单
至于想找到同一网络其它用户的MAC地址,用命令行。只要跟发方发送过数据或ping过对方的ip地址。
输入arp -a
还有很多工具能查询到对方的ip/mac地址。不过用途就不同了。哈
当然,新蓝电脑出现出厂就完全没有mac真的是重大失识。
又想到一个,U盘刚出现的时候,大部分电脑用的还是windows98。问题就来了,你花几百块买个16m大小的u盘想着能代替软盘,结果98系统不带u盘驱动。
只能带一个软盘拷贝一个u盘驱动,才能带着u盘到处走。
USB3.0的主板刚出来的,也有个搞笑的BUG,台式机还好,一般除了usb3.0以外,还有usb2.0,或者还有PS/2接口。但笔记本很多有且只有usb3.0。甚至自带的键盘、触控板也是走的USB3.0
问题就来了,当年的XP系统,vista系统都没有整合usb3.0。
结果就是一大堆的笔记本,重装系统,到了欢迎使用界面,键盘鼠标触控板通通不能用,只能干看着。。(安装过程中不需要驱动,bios内置了驱动模式,不然开机也进不了BIOS)
这破事最早是在苹果笔记本上遇上的,改win系统。我想着也就苹果傲娇一点。结果后来SONY,DELL、hp上也遇上了。顺便吐槽一下,SONY的BIOS是最傻逼的一个,没有之一。
解决方法倒也简单,系统安装包里面注入USB3.0驱动就可以了。
再补充一小段,新蓝电脑没写MAC地址,应该是因为特殊订单赶工导致的。其实只是一个小插曲。本身这牌子的笔记本质量还可以的,代工厂是曾经大陆唯一一个有完整电脑主板设计能力的顶星公司。创造了许多个大陆第一。。只是后来在湾省各大品牌包夹下只能走低端路线,主板品质还是相当靠谱的,只是可惜了。
2014年,在武汉某公司就职。
当时接到一个任务:做一个简单的监控程序,监控某个站点账户里面的余额,当余额低于设定值时,发送提醒短信,通知运营及时补充。
挺简单的,毫无难度,很快就做好了,上线使用也没问题。
随后不久我就调去其他项目组了。
过了大概三个月,运营的人找到我,说我之前写的程序不起作用了,经常余额只剩下几块钱,也没有短信提醒。
我检查了一下自己电脑上保留的代码,发现没啥逻辑漏洞,运行调试,也没问题,短信接口经过测试也不存在问题,都是好的。
我冷静想了想,找到了运营,问了下情况,他说后来又加了很多类似的不同站点余额监控功能。
哦,原来是我电脑的代码过于老旧了。
我本以为,拿到最新的程序代码,很快就能解决了。
可是简直天真。
拿到了最新的程序代码,我检查了一遍了,也调试了几遍,完全没问题啊!
我当时就有点懵逼了:调试的时候没有问题,一到线上就出问题?
我开始怀疑是程序运行的线上环境跟测试环境有点差异,后来检查后,把这个给排除了。
我都有点开始怀疑人生了,部门其他几个同事也很感兴趣,都纷纷来围观,出谋划策,最后都碰了壁。
哎,这个问题,最后还是被我找到原因,解决了。
问题出在哪呢?说句话,程序猿应该都能瞬间明白:临时变量被挪作他用了。
我最开始做的站点余额监控,我称之为A站点,后面加的,就依次称之为B,C,D等站点。
一开始,声明一个全局变量 AlarmValue来接受配置文件里面配置的A站点提醒额度(例如500)。然后每隔一段时间,获取A站点账户里面的实时余额,当这个余额数值小于AlarmValue时,就发送短信进行提醒。
最开始只有这一个站点监控时,肯定没问题。
可是万万没想到,另外一个程序员在做其他站点余额监控时,直接把这个AlarmValue作为临时变量用作其他用途,用来接一个临时参数。而因为业务原因,这里接收到的值都非常小(都是小于1的小数,例如0.5)。
当时程序一运行时,AlarmValue的值就从500变成了 0.5。那么A站点的余额,是永远不会小于0.5的,于是永远都不会发送短信了。
可是为什么调试的时候,没有出线这个问题,而线上程序就出现了呢?
因为IP白名单制度。
站点余额监控,需要利用程序来模拟账号登录,然后获取账户余额。在最开始做这个功能时,运营将我电脑的IP加入了A站点账号的IP白名单,从我电脑是可以登录A站点账号的。
但是BCD等其他站点,我电脑IP是无权登录的,所以调试时,其他站点监控的流程,在最开始就失败了(无法登录),后面“用AlarmValue作为临时变量用作其他用途,用来接收并临时存储一个参数”的流程也就没有被执行,AlarmValue的值就是正确的500。
就这么一个“简单”的问题,坑死了我几十亿脑细胞。
好多人在评论都在分锅,有人说这是答主的错,不该用全局变量;也有人说是猪队友的锅,怎么能随便拿别人写的变量来做其他用途。
我们现在就来分一下锅吧,反正都过去几年了,随便聊聊,什么都无所谓。
事情发的时间:2014年。
背景:处于业务需求,会不定时从A站点账户里面扣除钱,如果不注意,A站点的余额不足,就会对业务有一定的影响,需要人工及时充值。于是公司的运营希望我们帮忙开发一个工具,来监控站点余额,当余额低于设定值(这个值是可变的,有运营自己配置,可能是100,可能是500,可能是1000)时,发送短信,提醒运营及时充值。
需要注意的是:我接到这个需求时,当时公司那个项目的业务只有这一个站点业务,没有别的。随后不久我调到其他项目组,这边就没管了。后续扩展了其他几个站点业务,我是完全不知情的。
现在开始来分锅。
我想了想,这样子分锅吧:我的锅,占三分;同事的锅:7分。
不知道大家满意了没?
我的错在哪?
1.不够专业,写程序没有充分考虑扩展。
2.不够专业,用全局变量来读取和存储配置参数,同时也没有对该变量做限制和约束。
可能当时 我就是随手声明了一个 double AlarmValue= ................
如果让我现在来改写,最起码的,也应该是 const double AlarmValue= ................
或者再专业点,写一个config配置类,定义一个只读(get)属性 AlarmValue。
3.可能当时注释写的少,没有对关键变量做说明,导致同事以为这个变量不重要,而挪作他用。
可是我依旧认为,这个锅我只能分到三成。
1.我拿到需求时,该业务只有一个站点,并没有后续的扩展需求。我写的程序是完全满足需求的。
2.即便写的不够专业,但是只有一个站点监控时,使用全局变量来存储配置参数,不会有任何问题,也不存在程序性能缺陷。即便是后续有扩展需求,只要后面同事不把我写的变量挪做他用,也不会有任何的问题。
为嘛同事背7成的锅呢?
他属于在我的代码基础上做二次开发。可是在没有搞清楚状况的情况下,就随便我拿我定义的变量来使用,导致我原来的代码出bug。
这在任何时候,都是不被允许的,都是大忌。
人在新加坡,经历和上面联想白送电脑那位很像。
疫情封城后干活的电脑留在公司不能去取,但又要尽快开始居家办公,想着家里总该还是有台电脑,于是从戴尔新加坡官网outlet订了一台Latitude 7300翻新机。
一切都很顺利,付款,发货,收货,几天内就搞定了。因为刷了将近1300新加坡币,信用卡还挣了60多新币返现。
货到之后觉得这机器特别好,虽然不是最新款,但干活也绰绰有余。用了一个月左右发现从Thunderbolt 3接口出音频有噼里啪啦的杂音,换HDMI口也是,更新Intel HD Audio驱动并无效果。于是联系客服。
不得不说戴尔客服真的周到,第二天就让换主板。我想如果真是硬件问题,换主板应该是比较合适的,于是戴尔的师傅骑着摩托车戴着口罩来家里,三下五除二换了主板,说有什么跟客服联系。
然而问题依旧。
再次联系戴尔客服,客服立刻批示换主板。第二天戴尔的师傅又骑着摩托车来了,换了主板,然后说有事联系客服。我说别跑,咱们现在就试行不行。他说好,结果当着他的面,我用不同的显示器、电视、连接线、TB3扩摘坞,相互搭配,证明了电脑依旧有杂音,而且不是我外设的问题。师傅打电话跟总部说换了第二块主板还是不行,总部说好,我们订一块全新的(意思是说之前两块是拆旧回收的),我在电话外面听得着急,我说换了两次主板也不能解决,你们是不是应该从软件着手??? 我立刻在电脑上装了Ubuntu,进系统后用同样的设备播放音乐和视频,并没有上述问题,戴尔的维修师傅也说有道理,估计是Windows驱动的问题。电话那头说会调研一下,然后出结果。
但是总部那边还是坚持订了一块新主板,一周后师傅骑着摩托来换主板,我们都知道换主板的结果,问题肯定依旧,但现在这台电脑成了全新的... 师傅笑而不语。
又过了几天,戴尔问我可不可以把主板拿去检查,我说当然可以。又过了几天,戴尔说收到主板了,谢谢。我当时就黑人问号了??? 是不是我理解错了,他们之前是不是把换下来的旧主板拿去调研了? 于是我就没回,只是静静地等。
过了一个月,戴尔说,他们位于中国的研发部门对主板进行了检查,无法复现我汇报的故障。
我说,故障的视频我发给你们了,你们的维修师傅白纸黑字填写了故障报告,还把我装Ubuntu证明是软件问题的情况也跟你们说明了,你现在是想说我胡闹吗?
戴尔说我们看能不能给你换一台。我说不要,既然是软件问题肯定是全系列使用同样硬件和驱动版本的产品都有影响,你换来换去是浪费时间。
戴尔说那我们看看库存里有没有类似的型号。
因为事情已经拖了一段时间,他们只有Latitude 7310了。我说行。
然后他们说现在开始换机流程,请等待。
过了几天,送货的摩托车又来了。把电脑交给我就走了。我手里抱着两台电脑,闻着摩托车的尾气,心里怪怪的。
这就完了吗? 你们不要,之前那台了吗?
我把那台相当于全新的 7300 留在家里,生怕他们哪天会想起来,我还没扔。结果又过了一个月,戴尔只是冷冷地问了一次,请问新电脑收到了吗? 我说收到了,他们就挂了电话。
于是我就这样多出一台电脑。
我在一家烧烤店发现过一个难以置信的大BUG。
夏天晚上和伙伴们吃烧烤,这家店位置很偏,开车去要40分钟,但是生意非常火爆,相比之下他旁边也有一家店,就很冷清。
我们也是慕名而来,但是连着两次,我发现他们的点单系统非常混乱,比方说点了十个菜,其中一个是五串烤鱼豆腐,上菜之后已经吃完了,过会儿一个服务员又端着鱼豆腐来了,说你们这儿的鱼豆腐还没上呢吧?放下就走了……
结账的时候,看见账单上只有5串鱼豆腐的钱。我们一起吃饭的几个伙伴说,肯定是因为这家店最近生意太好了人手不够,服务员和后厨都乱掉了,哈哈哈哈下次还来这儿吃。
后来中午休息时我跟一个老师闲聊,说你知不知道那家烧烤店,点餐系统超级混乱……
结果话还没说完,那个老师就跟我说:对!他们服务员经常上错菜,每次我去吃他们不是给我上两次烤面筋就是给我重复端烤油麦,还有一次我们喝了五瓶啤酒,他们居然只数了三个瓶子!!幸亏他们家人多,每次我们都能少淘点儿钱!真不知道这家店这么混乱,一天要赔多少钱!!!
听完之后,我哑然失笑。
原来这家店不是因为人太多、服务员忙不过来了才出现了Bug;而是因为有了这个“Bug”,店里的人才有这么多的啊!!
后来我寻思,在家吃烧烤也行呀:
————————
P.S. 各位看官请移步评论区,你们脑洞厉害,我给跪了
最後發現有一個分號是中文字符。
有评论说硬盘磁头防震,读取数据时拿着硬盘上下甩也没事儿。
首先上下甩是低频外力冲击,和播放青藏高原时的高频声波不一样。
其次硬盘外封装有减震作用,磁头也有防震设计,但甩硬盘还是有风险的。读写数据时磁头悬浮在硬盘盘片上的,磁头到盘片的距离是纳米级别,所以设计的防震级别也是有限的。
------------再一次的分割线-------------
有人问怎么解决问题的。就是把固定硬盘的螺丝紧了紧,固有频率改变,硬盘就不共振了。
--------------原答案的分割线-------------
听一个希捷的朋友说的。
有用户反映每次用笔记本播放李娜的青藏高原时,电脑就会死机。经测试发现,唱到最后的“那就是青藏高...”时,硬盘产生了共振,振幅过大,读写头读不出数据了。
为了抓住这个bug,朋友听了一个月的青藏高原...