什么是Y2038虫

on

大家应该对Y2K虫也就是千僖虫比较清楚吧,这次千僖虫2代腾空出世,贯名为Y2038虫。

Y2038虫有什么危害?

作个小测试,将计算机的系统时间调整到2038年1月19日03:14:07以后的任意一个时间,看看会有多少错误框弹出来。在我的机器上Kaspersky Anti-Virus Personal和Tor都崩溃了,而据说Yahoo Messenger也会崩溃。

为什么会出现这种现象?

这要归功于C语言的标准时间库(Standard Time Library),因为这个库使用32bit来存储时间数值,而起始值0则是从1970年1月1日12:00:00开始,所以当时间数值达到这个库允许存储的最大值,也就是2的31次方时(其中一位用来存储正负,所以为31次方),唰,整个世界混乱了。

为什么叫Y2038虫?

1970年1月1日12:00:00加上2的31次方是哪一天哪一分哪一秒?2038年1月19日03:14:07,我们的Deadline!
SQL> column “Deadline” for a20
SQL> select to_date(‘19700101120000’, ‘YYYYMMDDHH24MISS’) +
2 (POWER(2, 31) – 1) / 3600 / 24 “Deadline”
3 from dual;

Deadline
——————–
2038-1-19 15:14:07

还好,到那一天还有三十多年,有的是时间让软件厂商推出64bit的补丁来弥补这个问题。:D

9 Comments Add yours

  1. 5415 says:

    kamus,我试验过了,我的系统啥事都没有。我还让我几个朋友都试验了,也是啥事都没有。

    怎么回事?

  2. Jin says:

    很喜欢你的地方
    做个链接好吗
    我已经链接上你了
    http://www.redmag.cn

  3. kamus says:

    Jin,你的redmag全部都是原创?很有artical感觉的一个站点,链接已加

    5哥,也不是所有软件都有问题,或者说你修改完以后,软件没有使用time_t函数也不会出问题。

  4. Joe says:

    牛,还真不知道,回去试试看!

  5. [红] says:

    是的,都是自己瞎写的…
    你这里有很多可以值得我学习的地方.

    kamus on March 28, 2006 at 10:27 am said:

    Jin,你的redmag全部都是原创?很有artical感觉的一个站点,链接已加

  6. kamus says:

    张扬是你自己去访问的?那么想来你是作媒体的吧。

  7. kamus says:

    5415 on March 27, 2006 at 6:10 pm said:

    kamus,我试验过了,我的系统啥事都没有。我还让我几个朋友都试验了,也是啥事都没有。

    怎么回事?

    不是所有的程序都会报错,如果调整以后,没有调用time函数也不会报错

  8. 中文域名 says:

    还真不知道,回去试试看!

  9. gf says:

    wowgameleveling
    [URL=http://www.wowgameleveling.com]wowgameleveling[/URL]

Leave a Reply

Your email address will not be published. Required fields are marked *