闰年计算中的计算机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 时间戳问题不会让银行系统结算出现崩溃。

相关推荐
三秋树几秒前
CodeQL 学习笔记【10】调试 CodeQL
安全·黑客·测试
美式请加冰8 分钟前
Linux权限的概念
linux·运维·服务器
zandy10118 分钟前
指标管理的AI自治之路:衡石平台如何实现异常检测、血缘分析与智能推荐的自动化治理
运维·人工智能·自动化
robinson198820 分钟前
崖山数据库-谓词没提前过滤优化器BUG
bug·优化器·崖山
CSND74024 分钟前
什么是Docker,容器是什么,镜像是什么,一文解读
运维·人工智能·docker·容器
我敲!28 分钟前
Qt中用//进行中文注释可能导致意外的BUG
qt·bug
三秋树29 分钟前
Fastjson RCE 复现 【01】1.2.24 版本利用及原理分析
安全·黑客·测试
烛衔溟34 分钟前
TypeScript 特殊类型与空值安全
安全·typescript·前端开发·空值处理
运维有小邓@34 分钟前
多系统账号反复手动配置?使用自动化编排提升身份管理效率
运维·自动化·ad域
KKKlucifer42 分钟前
4A 平台如何提升企业账号安全与操作可追溯性
运维·服务器·网络