我听过的最棒的调试故事 [译]

回到 80 年代初期,我的父亲在 Storage Technology 工作,这是一个如今已经不存在的公司,专门生产磁带驱动器和用于高速驱动这些磁带的气动系统——考虑到那个年代,这是非常先进的技术。

他们巧妙地设计了磁带驱动系统,允许一个中心驱动器——我们称之为‘A’驱动器——连接至七个‘B’驱动器,并通过附加在 A 驱动器上的一小块 RAM 中运行的简易操作系统,协调这些 B 驱动器间的数据读写任务。

每次启动 A 驱动器时,都需要向连接到 A 驱动器的外设驱动器插入一张软盘,以便将操作系统加载到 A 驱动器的 RAM 中。这个操作系统非常基础,运行在一个 8 位微控制器上。

这套系统主要面向那些拥有庞大数据集的企业客户,比如银行和杂志社,它们需要打印大量的地址标签或银行对账单。

有一次,一个客户遇到了麻烦。在打印过程中,一台特定的 A 驱动器突然停止工作,导致整个打印作业暂停。要恢复驱动器,操作人员必须重新启动整个系统——如果这种情况发生在六小时的打印作业中间,不仅会浪费大量宝贵的计算时间,而且整个作业进度也会大大落后。

于是,Storage Technologies 派出了技术人员。尽管他们竭尽全力,但在测试环境中却无法复现这个故障:这个问题似乎只在执行大型打印任务时发生。因此,怀疑是硬件故障,他们更换了所有可能的部件——RAM、微控制器、磁盘驱动器,以及磁带驱动器的其他所有部件——但问题依旧存在。

于是,技术人员向总部求助,请求派遣一位专家。

这位专家带着一把椅子和一杯咖啡,坐在了专为计算机设置的房间里——毕竟,那个时代的计算机还需要专用的房间。他在操作人员准备大型打印任务时静静观察,直到系统崩溃——正如所预期的那样。所有人都望向这位专家,但他对发生的原因一无所知。他指示重新准备打印任务,并再次坐下等待。

经过大约六小时的等待,系统再次崩溃。他仍然不清楚具体原因,只注意到崩溃发生在房间内人较多时。他又一次指示重新开始,并耐心等待。

在第三次系统崩溃时,他发现了一些规律。每当操作人员更换另一台与此无关的驱动器上的磁带时,系统就会崩溃。更重要的是,他注意到,只要有人走过地板上的某个特定瓷砖,崩溃就会发生。

这种地板由高约 6 到 8 英寸的支柱支撑的铝质瓷砖组成,旨在将庞大的电线网络隐藏于地砖之下,防止操作人员不小心绊倒重要的电线。瓷砖紧密拼接,防止任何碎片掉入电线空间。

专家发现问题所在:一块铝质地砖发生了扭曲。当操作人员踩在这块扭曲地砖的角落时,地砖边缘相互摩擦。地砖连接处的塑料摩擦产生微小火花,进而产生射频干扰。

尽管如今的 RAM 已经能够有效屏蔽射频干扰,但在当时,RAM 对此类干扰的防护远不充分。专家最终确定,正是这种射频干扰导致了 RAM 和操作系统的损坏。

专家联系维护部门,亲自更换了那块地砖,问题终于得到了解决。