Does Solaris have problems with dates in the year 2000 and after?

Does Solaris have problems with dates in the year 2000 and after?



Internally, Solaris maintains time as the number of seconds since
1970-01-01 00:00:00 UTC (not counting leap seconds). This counter
won't have any problem with dates in the year 2000; since it is
maintained as a 32-bit signed integer value in 32 bit kernels and
applications, it will work correctly through 2038-01-19 03:14:07 UTC.
64-bit Solaris uses a 64 bit time value which will last longer than the
current estimated age of the universe; but 32 bit applications,
such as most Solaris 7 applications, still use 32 bit time.


Also, 64-bit applications may have trouble with time stamps
outside the 32-bit range. For example, Solaris 7 supports only
32-bit time stamps on ordinary files, the 64-bit ctime and asctime
functions have undefined behavior for time stamps after the year 9999,
and the 64-bit localtime function has undefined behavior for huge time
stamps (time stamps after the year INT_MAX + 1900 == 2147485547).


Though the Solaris kernel itself shouldn't have any problems with the
year 2000, applications themselves may have problems, partly because
some application writers unwisely chose to represent dates using
two-digit years, and partly because some application writers
mistakenly thought that localtime returns the year modulo 100, when it
actually returns the year minus 1900. These kinds of problems are
rarer in Solaris than with typical mainframe applications, but they
sometimes do occur.


A year 2000 project at Sun is reviewing all libraries, unbundled
software, and some 3rd party apps in search of potential year 2000
problems, so that they are resolved well before the big day.


Solaris 2.6 and Solaris 7 are meant to be year-2000 compliant.
However, some y2000 bugs have been found after Solaris 2.6 was released.
A few more bugs were found after Solaris 7 was released. Y2000 patches
are available from SunSolve Online, free of charge.


If you have the following supported SMCC hardware, you must
also patch your PROM monitor to get year-2000 compliance:


- SPARCserver 1000, 1000E, 2000, 2000E

- Sun Enterprise 3000, 4000, 5000, 6000,
with PROM version 3.2.9 or earlier


The SPARCservers will need to have their OBP PROMs swapped.
The PROM bugs do not affect day-to-day operation or booting, only
output from diagnostics and self-tests is affected.


All other supported SMCC hardware should be OK as is.
(Note that the older 68000-based hardware is no longer supported.)


Sun-maintained Solaris applications with known year-2000 problems as
of Solaris 2.5.1 (unpatched) include the following.


* SCCS files store only the last two digits of the year, so standard
SCCS stops working after 1999. Sun works around this problem by
having SCCS interpret two digit years to be in the date range
1969-2068; this means the revised SCCS will stop working after
2068.


* The Solaris 1 `date' command can't set the clock past 1999.
This bug is partly fixed in Solaris 2 `date', which supports both
2-digit and 4-digit years; however, in Solaris 2 you should use
4-digit years when setting the date, to avoid some remaining bugs
with 2-digit year handling.


* The following programs are known to have minor bugs related to using
year-1900 instead of year modulo 100 when generating diagnostics,
temporary file names, and the like:


atq fsck listen passwd sar timex ufsdump uucico uustat uuxqt xterm


* The -me, -mm, and -ms troff macro packages all assume that
the current date is before January 1, 2000.


* `sortbib' mishandles bibliographies containing 2-digit years that
span the year-2000 boundary.


* `ckdate' rejects years after 1999.


* Problems have been reported with installing Solaris on machines
whose hardware date is past 1999.


* The filemgr `find after' and `find before' operations have only 2-digit
inputs for years, and mishandle dates after 1999.


* cm (the calendar manager) mishandles dates after 2000-02-29.


* In Openstep, NSCalendarDate, NSDate*, Mail, and Preference need
enhancements and fixes for years past 1999.


In addition, user applications that invoke `getdate' and `strptime' on
2-digit years are advised to check their assumptions carefully.


Patches for year 2000 problems will be made available for all releases
not EOLed at January 1, 1995, in keeping with the 5 year support
window. This includes the Solaris releases 2.5.1, 2.5, 2.4 and 2.3 as
well as SunOS 4.1.3_U1B and 4.1.4.


Solaris 2.x Y2000 patches can be freely downloaded from
Sun's public patch page.





Home
FAQ