调试笔记:硬件损坏一例
几日前,一好友打来电话,他的台式机无法开机,电源键按下后,只听到风扇声音,显示器点不亮。故障发生的经过是,前一天晚上,他让杀毒软件开始扫描病毒,没有关机,第二天早晨发现机器无法唤醒,重新开机就像刚才说的那样。
听罢这个描述,我感觉这个问题比较严重,似乎遥控不太好解决了,加上与这个朋友好久未见面了,于是便决定“到现场”看一下。
经过一番“望闻问切(感兴趣的详见《程序员》杂志或者《<软件调试>补编》内容11,P146)”,我推断是主板坏了。原因有以下几个:
1)不插内存(RAM)时,也听不到任何鸣叫。对于正常的主板,没有内存时,CPU也会执行ROM中的自检代码,发现没有RAM后就会以Beep Code来报错。现在鸦雀无声,那么说明基本的自举代码都没有执行(蜂鸣器坏的概率很低),CPU和主板之一出问题了,而CPU坏的概率很低(参见下一点)。
2)按机箱上的重启按钮(Reset),没有任何反应。对于正常的系统,Reset会导致南桥(ICH)发起系统的复位过程,可以看到风扇经历一个速度变化的过程。现在Reset按钮不响应,说明主板上的电路已经出问题了,基本的复位逻辑都跑不通了。
3)取掉扩展槽上的各种插卡,也没有任何起色。
朋友对我的分析非常信服,决定换一块主板,于是开车把整个系统带到了电脑城。到了店里后,负责装机的小伙子起初不相信主板会坏,但用排除法尝试了一番后服了。换一块可以兼容旧CPU的主板后,系统可以点亮了。
但故事还没有完,系统启动后,鼠标和键盘(PS/2接口)都无法使用,看得到桌面,也看见Windows XP开始发现新的设备,但是很快某个杀毒软件弹出一个对话框,询问是否阻止安装驱动程序,默认是阻止,因为鼠标键盘都不能用,所以也没有办法去改变选项。于是系统便一直没有鼠标键盘可用。
负责装机的小伙子反复重启了几次都不管用,换一个USB的鼠标也不管用。于是,他建议重装操作系统。这个建议让我的朋友无法接受,用他的话来说,里面安装了太多的软件,重装一下要太多时间,有些已经不记得怎么装了。我很理解朋友的想法,是啊,重装操作系统,好比是把一栋楼推倒重建......
我建议进安全模式试一下。第一次这样的尝试也失败了,症状一样。我又建议换一块芯片组差异大些的主板,再进安全模式,等待了快一分钟后,鼠标神奇的动起来了:-)接下来卸载杀毒软件,重启系统,换回第一次更换的主板,都很顺利了。
这上面的过程中,意外的发现,在旧系统中的外加显卡上,有一颗电容明显膨胀开裂了。联系起这块显卡的风扇声音特别大,我恍然大悟,前一个晚上在这个系统中发生的故事很可能是这样的:在这个系统长时间运行后,已经使用了两年多的显卡表现出了衰老症状,上面的电容爆烈,这个电容的破裂影响了显卡上与风扇有关的电路,导致风扇的转速加大,声音更响,而且失去了自动调整速度的能力。持续不断超高速旋转的风扇增加了显卡的耗电量,需要有超过平常大小的电流持续从主板送到显卡,这导致主板上的有关电路永久损坏了。
也有可能,显卡出故障已经有段时间了,但没有及时发现,系统仍带“病”运行,最终导致主板损坏。作为诱因的显卡看起来一直还可以工作(只是很响),但它却是罪魁祸首——Root cause。