~ / topics / Operating Systems
$man os-bsd-and-unix

BSD and Commercial Unix

In brief: The BSD family fixed 2038 earliest. NetBSD switched to 64-bit time on every platform in 2012, and OpenBSD followed in 2014. FreeBSD used 64-bit time everywhere except old 32-bit PCs (i386), which it retired in 2025. Commercial Unix systems such as Solaris, AIX and HP-UX are safe for 64-bit programs, but many still run 32-bit programs that will break in 2038, and several of these platforms are at or near end of life.

Risk level Low (OpenBSD, NetBSD, FreeBSD 64-bit) · Medium–High (32-bit binaries on Solaris/illumos, AIX and HP-UX, plus FreeBSD/i386 installs)
Status OpenBSD fixed in 5.5 (2014). NetBSD fixed in 6.0 (2012). FreeBSD fixed except i386, which was retired in 15.0. Commercial Unix: 64-bit userland safe, 32-bit legacy at risk
Last reviewed 2026-10-21

2038 status at a glance

Not affected or different deadline (1), and why

Overview

The BSDs build the kernel and the whole base userland from one source tree. That made it practical to change time_t in one coordinated step, which Linux could not do [1]. The two projects took different approaches:

Commercial Unix vendors moved to LP64 (64-bit long and therefore 64-bit time_t) in the late 1990s for 64-bit applications. They kept ILP32 (32-bit time_t) for 32-bit applications, for compatibility. The remaining exposure on these systems is the 32-bit software still running on them.

Technical details

OpenBSD

NetBSD

FreeBSD

illumos (OpenIndiana, SmartOS, OmniOS) and Oracle Solaris

IBM AIX

HP-UX

Other legacy commercial Unix

Tru64, IRIX, SCO OpenServer/UnixWare and older Solaris releases (≤ 10 on 32-bit SPARC/x86) are out of support. Any surviving installation should be treated as not 2038-safe unless proven otherwise by testing. OpenVMS (not Unix) moved its C runtime to an unsigned 32-bit time_t in 1998, which extends it to 2106 [6].

Affected versions / products

OS 64-bit time_t since Exceptions / residual risk
OpenBSD 5.5 (2014-05-01), all platforms [4] Pre-5.5 binaries do not run at all. Some fields are unsigned 32-bit (to 2106)
NetBSD 6.0 (2012), all ports [2] Old binaries under the compat layer
FreeBSD amd64/arm64/armv7/powerpc* Always on 64-bit. 32-bit non-i386 ports changed early [7] UFS1 limit moved to 2106 in 15.0 [11]
FreeBSD i386 Never (32-bit time_t) [7] Platform retired in 15.0 [11]. 13.x/14.x i386 and 32-bit compat binaries remain at risk
illumos distributions 64-bit binaries only ~90% of utilities are 32-bit; IPD 14 in progress [12]
Oracle Solaris 11.4 64-bit binaries; most userland converted to LP64 [13] 32-bit third-party applications
IBM AIX 64-bit applications 32-bit applications; JFS1 timestamps [15]
HP-UX 11i v3 64-bit applications [16] 32-bit applications; OS past standard support [17]

Risk & compliance notes

Detection & mitigation

See also

References

  1. Pondering 2038 — LWN.net (Jonathan Corbet), 2013-08-14. OpenBSD's 2013 commit and its "one huge, incompatible ABI change".
  2. Announcing NetBSD 6.0 — The NetBSD Project, 2012. 64-bit time_t on all ports.
  3. NetBSD system roadmap (doc/roadmaps/system r1.10) — NetBSD, 2012-01. Completed in 5.99.7 with no libc major bump (seen in search results).
  4. OpenBSD 5.5 — OpenBSD, released 2014-05-01. Release notes quoted above.
  5. svlogd timestamps fail on OpenBSD 5.5 (snapshot) — supervision mailing list. An example of porting fallout (seen in search results).
  6. Year 2038 problem — Wikipedia. Secondary source: NetBSD compat binaries still affected; OpenVMS unsigned time_t since 1998.
  7. arch(7) — FreeBSD Manual Pages. time_t is 8 bytes everywhere except i386.
  8. FreeBSD Bugzilla #272622 — FreeBSD. "FreeBSD/i386 still has a 32-bit time_t" (gtar --disable-year2038).
  9. FreeBSD phasing out 32-bit platforms — LWN.net, 2024. The 2024 deprecation plan (seen in search results).
  10. FreeBSD Continues Push Toward Deprecating 32-bit Platforms — Phoronix. Plan details and 32-bit compat through stable/16 (seen in search results).
  11. FreeBSD 15.0-RELEASE Release Notes — FreeBSD Project. i386, armv6 and powerpc retired; UFS1 limit deferred to 2106.
  12. IPD 14: illumos and Y2038 — illumos Project Discussions (GitHub). ~90% of utilities 32-bit; plan to rebuild as 64-bit.
  13. OS-8097: 64-bit userspace for SmartOS — SmartOS bug tracker. Links to the Oracle blog "Oracle Solaris 11.4 beta: progress on LP64 conversion", which returned HTTP 403 when fetched.
  14. tz mailing list message on Solaris 32-bit applications and 2038 — IANA tz list, 2022. A community statement (seen in search results).
  15. IBM APAR IV92515 — IBM Support. The istat 2038 fix and the JFS 32-bit timestamp limitation (seen in search results). z/OS context from Longpela Expertise.
  16. HPE Community: how to set date beyond 31st Dec 2037 — HPE Community and the 32-bit getdate thread. These quote HP-UX getdate documentation (seen in search results).
  17. The last supported version of HP-UX is no more — The Register, 2026-01-05. End of standard support 2025-12-31; mature support to 2028 (seen in search results).