所谓玄学bug大多是不易触发,或者复现非常困难的bug,而这样的bug大多隐藏在硬件上或者无法捕获的外界环境上。给大家说说那些曾经的“玄学”bug:
17年英特尔公布了一个cpu内的bug,其实这个bug早就出现了,一直有开发者说某些程序在打开超线程后不稳定,但是一直无法准确找到触发条件,直到这一消息被确认:英特尔第六代和第七代 Core 处理器(桌面、移动和服务器版的 Skylake/Kaby Lake 和部分奔腾处理器)在启用超线程时发现存在一个处理器/微码缺陷。该缺陷会导致无法预料的操作系统行为,如应用程序崩溃或数据丢失。应对的权宜之计是关闭超线程,或更新处理器微码。该缺陷不只是影响 Debian 操作系统,可能会影响所有使用上述处理器的操作系统。这汇总bug一般不会轻易捕获,即使捕获了也不太可能轻易去确认。
还有一个“玄学”bug,cpu被宇宙射线射掉了寄存器的值、宇宙射线击穿内存,导致电位翻转等。在强太阳风暴期间都有多颗卫星由于单粒子效应而出现异常和故障,例如,在2003年,太阳质子事件曾经导致地球同步轨道卫星Inmarsat中的一颗卫星由于CPU瘫痪而失效,美国SOHO、ACE、Wind、Polar、GOES等科学卫星数据丢失或损坏。这一情况在医院、研究院、航天领域发现比较多。所以呢有时候服务器宕机、数据乱码都有可能是宇宙射线在搞鬼,但是这种bug说出来一般没人会相信,大多数只能默默认栽了。
还有一个环境导致bug,严格来说并不算是bug,但也挺“玄学”了,这就是美国通用汽车“香草冰淇淋”bug。美国通用汽车公司收到一封客户抱怨信,我们家有一个传统的习惯,就是我们每天在吃完晚餐后,都会以冰淇淋来当我们的饭后甜点。由于冰淇淋的口味很多,所以我们家每天在饭后才投票决定要吃哪一种口味,等大家决定后我就开车去买。但自从最近我买了一部新的庞帝雅克后,在我去买冰淇淋的这段路程问题就发生了。每当我买的冰淇淋是香草口味时,我从店里出来车子就发不动。但如果我买的是其他的口味,车子发动就顺得很。为什么这部庞帝雅克当我买了香草冰淇淋它就发不动,而我不管什么时候买其它口味的冰淇淋,它就可以发动?为什么?事后证明原因是出在这家冰淇淋店的内部设置的问题。因为,香草冰淇淋是所有冰淇淋口味中最畅销的口味,店家为了让顾客每次都能很快的取拿,将香草口味特别分开陈列在单独的冰柜,并将冰柜放置在店的前端;至于其它口味则放置在距离收银台较远的后端。现在,工程师所要知道的疑问是,为什么这部车会因为从熄火到重新激活的时间较短时就会发不动?原因很清楚,绝对不是因为香草冰淇淋的关系,答案应该是“蒸气锁”。因为当这位仁兄买其它口味时,由于时间较久,引擎有足够的时间散热,重新发动时就没有太大的问题。但是买香草口味时,由于花的时间较短,引擎太热以至于还无法让“ 蒸气琐 ”有足够的散热时间。
(图片来自网络)