2012-07-30 57 views
2

我一直在考虑休眠故障,无法找出一个例子。根据定义,休眠故障是一种故障(代码缺陷),不会导致错误,因此不会导致故障。任何人都可以给我一个例子吗?掠过我心中唯一的办法就是unusued bug的代码.. 感谢休眠故障的一个例子?

回答

4

休眠故障是比人们想象的要普遍得多。大多数程序员都经历过思考“我在想什么?怎么可能永远运行正确?”,即使代码没有表现出错误的行为的时刻。经典案例是错误的角落处理,例如在失败的内存分配上:

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

上面的代码将在大多数情况下正常工作,并通过测试就好;然而,当malloc由于内存耗尽而失败时,它会惨败。故障在那里,但是休眠。

+0

太好了,谢谢!任何其他与内存不相关的例子? – user970696 2012-07-30 08:58:36

2

休眠故障只是那些没有得到透露,直到您发送正确输入[编辑:或情况]系统。

一个典型的例子是从Therac-25。在技​​术人员使用该系统变得“流利”之前,不会发生由输入上不太可能产生的一组键引起的竞争状况。他们记住了常见治疗的关键,这意味着他们可以很快进入。

浮现在我的脑海里一些其他的:

  • 千年虫都处于休眠状态的故障,直到2000年到来的时候...
  • 的Photoshop 7仍然运行确定我的Windows 7机器上,yet it thinks my 1TB disks are full 。一种解释是用于容纳可用空间的数据类型不是为了解释如此大量的可用空间而设计的,并且存在导致可用空间不足的溢出。
  • 用TFTP传输一个大于32MB的文件(块计数器只能在16位中进入65535)可以在很多旧的实现中发现一个休眠错误。

在最后一组例子中,可以说没有规范要求这些系统支持这些实例,所以它们并不是真正的缺点。但是,这是完整的规格。