网易首页 > 网易号 > 正文 申请入驻

glibc在默认情况下并未妥善解决Y2038问题

0
分享至

由于 Y2038 问题, Linux Kernel 早在几年前就已经切换到 64 位 time_t,而且发行版 Alpine 3.13 时也跳到了 64 位 time_t。不过近日,Alpine 安全团队主管 Ariadne Conill 发文表示 GNU libc 2.34 在支持 64 位 time_t 上存在缺陷,可能在过渡过程中产生障碍。

Alpine 安全团队主管 Ariadne Conill,图片来自于 Twitter

如果你密切关注 Linux 领域的发展和动向,肯定了解 2038 年错误(Year2038 bug)。这个问题之所以会存在,是由于到了 2038 年 1 月 19 日那天,可以用 Unix 带符号的 32 位整数时间格式表示的最新时间是 03:14:07 UTC。

可以用 Unix 带符号的 32 位整数时间格式来表示的最新时间是 2038 年 1 月 19 日 03:14:07 UTC,这是 1970 年 1 月 1 日之后过了 2147483647 秒。过了那个时间后,由于整数溢出,时间值将作为负数来存储,系统会将日期读为 1901 年 12 月 13 日,而不是 2038 年 1 月 19 日。

Alpine 操作系统是一个面向安全的轻型 Linux 发行版。它不同于通常 Linux 发行版,Alpine 采用了 musl libc 和 busybox 以减小系统的体积和运行时资源消耗,但功能上比 busybox 又完善的多,因此得到开源社区越来越多的青睐。

在博文中,Conill 表示在 Alpine 使用的 musl C 库以及许多其他 UNIX C 库实现中,time_t 在新代码中总是 64 位的,并且为需要旧的 32 位函数的代码提供了兼容性存根(compatibility stubs)。当代码随着时间的推移被重建时,它将自动成为符合 Y2038 标准的代码,而无需任何努力。

微软在 msvcrt 中又前进了一步:你默认得到 64 位的 time_t,但如果你在编译时定义了 _USE_32BIT_TIME_T 宏,你仍然可以访问旧的 32 位函数。需要注意的是,上面描述的两种方法都引入了零摩擦,以获得正确的东西。

GNU 项目为过渡到新的 ABI 所采取的方法正好相反:你必须明确要求新的功能,否则你将永远得不到它。这种方法为将来改变默认值留下了可能性,但到目前为止,他们从未这样做过。

这可以从大文件支持扩展中观察到,需要处理大于 2GiB 的文件,你必须总是用 -D_FILE_OFFSET_BITS=64 来构建你的代码。同样,如果你在一个 32 位系统上,而你没有用 -D_TIME_BITS=64 来构建你的应用程序,它将不会使用符合 Y2038 的 ABI 来构建。

这是最糟糕的方式。考虑一下库:如果一个依赖关系是用 -D_TIME_BITS=64 构建的,而另一个依赖关系没有,并且它们需要相互交换结构 timespec 或类似的东西,怎么办?那么,在这种情况下,你的程序很可能会崩溃或出现奇怪的行为,因为你在编译的程序中没有持续使用相同的结构 timespec。

幸运的是,如果你的目标是32位系统,而且你想处理大于2GiB的文件,或者有信心你的代码在2038年还能继续工作,有一些Linux发行版是建立在Musl之上的,比如Alpine,这将使你不必处理GNU libc的特殊性

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
38岁已婚女与37岁情人,在石凳子上发生关系,温存后被残忍杀害

38岁已婚女与37岁情人,在石凳子上发生关系,温存后被残忍杀害

胖胖侃咖
2024-06-08 08:00:08
福登在社媒晒出比亚迪海豹,配文:很喜欢我的新车!

福登在社媒晒出比亚迪海豹,配文:很喜欢我的新车!

懂球帝
2024-06-15 09:25:08
湖南:小伙捧鲜花表白女技师,做足疗一见钟情,网友:长得很哇塞

湖南:小伙捧鲜花表白女技师,做足疗一见钟情,网友:长得很哇塞

百晓史
2024-06-02 09:09:36
旅行者1号传回全部四个仪器的科学数据 全面恢复通信能力

旅行者1号传回全部四个仪器的科学数据 全面恢复通信能力

cnBeta.COM
2024-06-14 15:23:04
新冠疫后,罕见癌症大增

新冠疫后,罕见癌症大增

霹雳炮
2024-06-13 23:40:49
魔兽里的钓鱼佬真的太强了!全服为他刷屏666

魔兽里的钓鱼佬真的太强了!全服为他刷屏666

苹果牛看游戏
2024-06-14 19:53:11
突发!52岁男星宣布确诊大肠癌,饮食健康每天健身仍得病情绪崩溃

突发!52岁男星宣布确诊大肠癌,饮食健康每天健身仍得病情绪崩溃

云图娱乐
2023-07-21 15:58:17
北约高官透露:北约30天内可派出超30万大军

北约高官透露:北约30天内可派出超30万大军

海外网
2024-06-14 17:02:02
广西超越四川成为第一,艾滋病川渝重灾区,切记不要随便找小姐!

广西超越四川成为第一,艾滋病川渝重灾区,切记不要随便找小姐!

滑稽斑马呀
2024-06-14 15:45:50
“商砼”的“砼”字不读quán,也不读shuān,那它的正确读音是?

“商砼”的“砼”字不读quán,也不读shuān,那它的正确读音是?

迷局科普
2024-06-14 11:29:09
打土耳其刁琳宇不该首发?袁心玥赛后不留情面,女排名宿一针见血

打土耳其刁琳宇不该首发?袁心玥赛后不留情面,女排名宿一针见血

元爸体育
2024-06-15 17:27:50
无锡再添一家上市公司,可惜上市首日破发,大跌超17%!

无锡再添一家上市公司,可惜上市首日破发,大跌超17%!

胡华成
2024-06-15 16:30:10
2024年高考结束:装睡十六年的唐尚珺,终于被冷酷的现实锤醒了!

2024年高考结束:装睡十六年的唐尚珺,终于被冷酷的现实锤醒了!

舞娱天地
2024-06-13 17:23:42
曝银行副行长出轨女员工,误将视频发到工作群,女方老公也在群里

曝银行副行长出轨女员工,误将视频发到工作群,女方老公也在群里

180°视角
2024-06-14 12:58:33
胡歌被台独分子刁难,仅邱毅站出来声援,网友:这样的人太少了

胡歌被台独分子刁难,仅邱毅站出来声援,网友:这样的人太少了

小影的娱乐
2024-06-15 14:47:10
刚率国足进18强,伊万就点燃第一把大火,三大国脚被弃用永不征召

刚率国足进18强,伊万就点燃第一把大火,三大国脚被弃用永不征召

阿牛体育说
2024-06-15 18:02:54
让二追三!中国女排逆转土耳其,进军世界女排联赛总决赛

让二追三!中国女排逆转土耳其,进军世界女排联赛总决赛

懂球帝
2024-06-15 22:47:15
菲律宾坐滩破船终迎大结局?菲驻军或撤离,中方:允许离开

菲律宾坐滩破船终迎大结局?菲驻军或撤离,中方:允许离开

盒子里的密探
2024-06-16 00:06:14
或将改变世界!中俄两大惊天合作曝光,急得美国直跳脚!

或将改变世界!中俄两大惊天合作曝光,急得美国直跳脚!

华人星光
2024-06-15 16:20:27
热到破纪录!11级雷暴大风即将到武汉!湖北未来三天雨水逼退火力

热到破纪录!11级雷暴大风即将到武汉!湖北未来三天雨水逼退火力

极目新闻
2024-06-15 20:00:04
2024-06-16 01:40:49
cnBeta.COM
cnBeta.COM
提供IT行业即时资讯
51302文章数 68711关注度
往期回顾 全部

科技要闻

TikTok开始找退路了?

头条要闻

563支AI队伍和姜萍考同一份试卷:最高34分 都没进决赛

头条要闻

563支AI队伍和姜萍考同一份试卷:最高34分 都没进决赛

体育要闻

莱夫利,让困难为我让路

娱乐要闻

江宏杰秀儿女刺青,不怕刺激福原爱?

财经要闻

新情况!高层对人民币的态度180°转弯

汽车要闻

东风奕派eπ008售21.66万元 冰箱彩电都配齐

态度原创

家居
手机
时尚
房产
公开课

家居要闻

空谷来音 朴素留白的侘寂之美

手机要闻

小米澎湃OS再次公布进展通报:多项问题优化中,且全是内置应用!

艳压四方的刘亦菲,也没能赢她

房产要闻

万华对面!海口今年首宗超百亩宅地,重磅挂出!

公开课

近视只是视力差?小心并发症

无障碍浏览 进入关怀版