Surviving 19 Jan 2038 on 32 Bit Platforms: Lessons Learned and Common Problems
summary
Demonstrates that a default 32 bit image built earlier fails catastrophically at the 2038 rollover while a recent Yocto rebuild with _TIME_BITS=64 survives, documents that kernel APIs need at least kernel 5.1 and most fixes land in kernel 5.6, and shows glibc requires global rebuilds to expose 64 bit time_t symbols. Highlights Rust libc crate linking to 32 bit symbols, vendor blobs, accidental truncation from time_t to 32 bit ints, and a practical test method using qemu boot at 2040 to catch breakage.
AI-written summary · about
chapters (16)
- 0:002038 problem overview
- 2:32Live demo: rollover failure
- 7:03Patched system survives rollover
- 8:34Preparing software for 64-bit time
- 10:22Kernel API changes
- 11:47Kernel time handling fixes
- 12:55C library time types
- 15:45Glibc 64-bit time
- 17:10Rust 32-bit time risks
- 19:19Testing 2038 readiness
- 21:28Installable tests
- 22:52Testing exposes issues
- 25:29Bit truncation in C
- 29:47Migrate to 64-bit?
- 32:01Conclusion
- 34:11Q&A
related talks
23mDeprecating Stuff
24mRISC-V software ecosystem in 2020
30mA Series of Unfortunate Bugs
46mTame the Cross-Platform Beast
01h 04mMaking C++ and the STL Work in the Linux / Windows Kernels
47mPrepping your Open Source Project for Multi-Platform
15mCan I Tell You a Secret? I See Dead Systems
21mDriving Innovation: Evolving the Role of Software in the RISC-V Ecosystem Beyond...
