Home / Fixes
Remediation
Fixes and mitigations
Each stored 32-bit seconds field has to be widened or the box replaced before that field overflows. A 64-bit kernel does not widen a TIMESTAMP column.
The fix that lasts
- 64-bit
time_tend to end. Kernel, libc, and every public struct. On LP64 this is already the platform default. Overflow moves to a date nobody will operate. - Time64 on hardware that must stay 32-bit. glibc 2.34+ with
_TIME_BITS=64and_FILE_OFFSET_BITS=64together. Yocto and Buildroot have the equivalent switch. Debian rebuilt 32-bit ports excepti386, which stays time32 so old x86 binaries keep working. Details on Linux. - Widen the field that is actually stored. MySQL
TIMESTAMPtoDATETIMEor a 64-bit integer. ext4 128-byte inodes to a volume with 256-byte inodes. XFS withoutbigtimeto a filesystem that has it. Commands are on databases and filesystems. - Replace what cannot be rebuilt. Schedule that from the calculator: deadline minus service life, not from a 2037 panic.
What only buys time
Unsigned 32-bit Unix time reaches 7 February 2106 and cannot represent dates before 1970. Reasonable for a sealed logger that will be scrap by 2050. Not a platform strategy. A windowing trick — “if the value is small, add 136 years” — breaks anything that still needs real pre-1970 dates and any library that shares the struct.
What does not work
- Reading
uname -mand stopping. The column, the inode and the firmware log are separate systems. - Changing a display format so the UI looks current.
- Testing only
dateon the shell. The failure is often in a timeout, a certificatenotAfter, or a batch job that writes next decade’s dates. - Treating NTP, GPS week and DVB-SI as fixed because the OS clock is 64-bit. Those counters are on the timeline.
Record ABI width, filesystem timestamp ceiling, database column types, and whether the clock is set from GPS or DVB-SI. A PDF that says “Y2K38 compliant” without those four is not evidence.