[tz] problems with unsigned 32-bit time_t coming up
Alan Barrett
apb at cequrux.com
Tue May 28 07:55:13 UTC 2013
On Mon, 27 May 2013, Christos Zoulas wrote:
>There have been two major bugs I can remember relating to NetBSD's
>64 bit time_t.
[...]
>2. Postgres assumed the sizeof(time_t) == sizeof(long), and when systems
> upgraded to NetBSD-6 and recompiled postgres (because the compatibility
> code just works fine), it exposed that postgres bug and none of the
> databases would load.
Let me expand a little about the compatibility code.
Up to and including NetBSD-5.x, NetBSD on 32-bit platforms used
32-bit time_t (the same size as long). NetBSD-6.0 was the first
release in which NetBSD on 32-bit platforms used 64-bit time_t
(but 32-bit long). The kernel and libc provide compatibility
interfaces that allow applications that were compiled against an
older version of NetBSD to continue to work (with 32-bit time_t in
the application) when run under a newer kernel (with 64-bit time_t
in the kernel).
Because of the compatibility code, latent bugs in applications
that were compiled on an older version of NetBSD (that had 32-bit
time_t) may be hidden until the application is recompiled under
the newer version of NetBSD (with 64-bit time_t).
--apb (Alan Barrett)
More information about the tz
mailing list