休眠故障的一个例子?

时间:2012-07-30 07:34:48

标签: terminology theory fault

我一直在考虑潜在的故障,无法想出一个例子。根据定义,休眠故障是一种故障(代码中的缺陷),不会导致错误,因此不会导致故障。谁能举个例子?在我脑海中唯一想到的是错误的代码.. 感谢

2 个答案:

答案 0 :(得分:4)

休眠故障比人们想象的要常见得多。大多数程序员都经历过一段时间的思考“我在想什么?如何永远正确运行?”,即使代码没有显示出错误的行为。典型案例是错误的角落案件处理,例如:内存分配失败:

char *foo = malloc(42);
strcpy( foo, "BarBaz" );

上述代码在大多数情况下都能正常工作,并且通过测试就好了;但是,当malloc由于内存耗尽而失败时,它将失败地失败。故障在那里,但是处于休眠状态。

答案 1 :(得分:2)

休眠故障只是在您向系统发送正确的输入[编辑或环境]之前不会泄露的故障。

一个典型的例子来自Therac-25。在技​​术人员使用该系统变得“流利”之前,由输入键不太可能引起的竞争条件没有发生。他们记住了常见治疗的关键笔划,这意味着他们可以很快进入。

其他一些我想到的:

  • Y2K漏洞都是休眠故障,直到2000年才出现......
  • Photoshop 7仍在我的Windows 7计算机yet it thinks my 1TB disks are full上运行正常。一种解释是,用于保存可用空间的数据类型不是为了解释如此大量的可用空间而设计的,并且存在溢出导致可用空间不足。
  • 使用TFTP传输大于32MB的文件(块计数器只能以16位为65535)可以揭示许多旧实现中的休眠错误。

在最后一组示例中,有人可能会说没有规范要求这些系统支持这样的实例,因此它们并不是真正的错误。但这完全符合规范。