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

相关推荐
pk_xz12345623 分钟前
Shell 脚本中变量和字符串的入门介绍
linux·运维·服务器
小珑也要变强26 分钟前
Linux之sed命令详解
linux·运维·服务器
Lary_Rock2 小时前
RK3576 LINUX RKNN SDK 测试
linux·运维·服务器
一坨阿亮6 小时前
Linux 使用中的问题
linux·运维
hikktn6 小时前
如何在 Rust 中实现内存安全:与 C/C++ 的对比分析
c语言·安全·rust
wclass-zhengge8 小时前
Docker篇(Docker Compose)
运维·docker·容器
李启柱8 小时前
项目开发流程规范文档
运维·软件构建·个人开发·设计规范
23zhgjx-NanKon8 小时前
华为eNSP:QinQ
网络·安全·华为
23zhgjx-NanKon8 小时前
华为eNSP:mux-vlan
网络·安全·华为
昔我往昔9 小时前
阿里云文本内容安全处理
安全·阿里云·云计算