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

相关推荐
热爱编程的小白白6 分钟前
【Playwright自动化】录制生成脚本
运维·自动化
java_logo15 分钟前
MySQL Server Docker 容器化部署指南
linux·运维·数据库·docker·容器
I***t71625 分钟前
自己编译RustDesk,并将自建ID服务器和key信息写入客户端
运维·服务器
BJ_Bonree30 分钟前
数智先锋 | 核心应用响应时常<1s、多终端崩溃率低至 0.1%!Bonree ONE 赋能蓝月亮应用性能与终端体验双重升级!
运维
张鱼小丸子35 分钟前
电脑刷机教程:轻松重装系统指南
运维
k***19541 分钟前
Nginx反向代理出现502 Bad Gateway问题的解决方案
运维·nginx·gateway
可爱又迷人的反派角色“yang”44 分钟前
LVS+Keepalived群集
linux·运维·服务器·前端·nginx·lvs
hadage2331 小时前
--- docker 一些指令的汇总 ---
运维·docker·容器
这个人需要休息1 小时前
xss的漏洞类型+dvwa DOM xss各难度的小总结
网络·安全
好奇的菜鸟1 小时前
WSL 2 安装 Ubuntu 24.04 及系统迁移到非系统盘
linux·运维·ubuntu