闰年计算中的计算机Bug

不知道你有没有看过凯瑟琳泽塔琼斯主演的《偷天陷阱》,里面主题思想是用银行结算系统的千年虫bug,精心设计,盗取银行几十亿的精彩动作片。所谓2000 年千禧年的千年虫,其实就是计算机计算闰年的bug。

这个闰年计算的历史源远流长,我一直以为已经淘汰进了垃圾堆,结果竟然还有新闻报道2024年2月29日,又因为闰年多出1天,导致某些公司的系统出现问题的报道,这个维护人员麻痹大意,翻历史的旧账确实让2024年的我有穿越的喜感。

电脑系统中的时间计算,是非常复杂的问题。

其实千年虫bug以及 Unix到2038年的问题都是可预测的,只要软件更新相关兼容功能,就不会发生宕机、错误等问题。

然而现实情况是,闰年问题是不可预测的,编制程序的才子能力真的是良莠不齐,很多拿来的代码直接用,很少审计其中的Bug,尤其是越明显的bug越没有人去认真审核,于是,只有时间来到 2月29日或者闰年的最后一天,程序出现故障,才真的去解决问题。

历史上,有很多闰年计算导致的财产损失案例。

1996年12月31日 00:00,新西兰铝冶炼厂 的 660 台电脑全部宕机,原因是程序无法处理一年的第 366 天,所以闰年的最后一天不会工作......由于没有程序来调节问题,最终导致了 100 万美元的损失。

2000年12月31日,挪威铁路公司的列车无法运行。问题与铝冶炼厂相同,好在工程师临时将时钟调回一个月,这才启动了列车。

2008年12月31日,微软的 Zune 30(MP3)完全卡住,一整天都无法使用。而 Zune 30 刚发售两年。

2010年3月1日,索尼的 PS3 厚机错误的以为这天是 2月29日,然后导致网络连接错误。

每次闰年(甚至不是闰年),总会有程序发生各种错误。即使在 2020 以及 2024 年,情况也没有好转。所以这算是每 4 年一次的程序故障日吧。

希望2000 年的千年虫真的成为历史,未来 2038 年的 Unix 时间戳问题不会让银行系统结算出现崩溃。

相关推荐
橙露1 分钟前
数据库运维核心:MySQL主从复制与读写分离的部署与维护
运维·数据库·mysql
belldeep2 分钟前
网络安全:WAF 雷池 SafeLine 介绍
安全·web安全·雷池·safeline
EkihzniY3 分钟前
筑牢线上医疗人脸识别的安全根基
安全
Irene19913 分钟前
AI 找 bug 的局限性 和 Deepseek 优势明显
bug
Wpa.wk7 分钟前
Docker- 故障注入(混沌工程)测试(简单过程阐述)
linux·运维·分布式·测试工具·docker·容器
wenzhangli717 分钟前
Ooder SuperAgent 实战指南:企业级AI能力分发与自动化协作框架
运维·人工智能·自动化
彷徨的蜗牛19 分钟前
软件架构设计的灵魂:在权衡与约束中寻找最优解
运维·微服务·架构
宇钶宇夕21 分钟前
CoDeSys入门实战一起学习(二十五):梯形图(LD)触点与线圈指令精讲及电机启停案例
运维·学习·自动化·软件工程
数研小生41 分钟前
淘宝宝贝详情数据爬虫:单线程采集突破方案(多线程 / 多进程实战)
linux·运维·爬虫
zhengfei61142 分钟前
“抖音崩了”冲上热搜,无法正常搜索,刷视频功能未受影响
安全