OpenVMS ALPY2K01_071 Alpha V7.1 - V7.1-1H2 Year 2000 ECO Summary
TITLE: OpenVMS ALPY2K01_071 Alpha V7.1 - V7.1-1H2 Year 2000 ECO Summary
Modification Date: 02-APR-99
Modification Type: Updated Documentation:
This kit does not need to be installed on
OpenVMS Alpha V7.1 systems if the current
version of the ALPBASE0x_071 ECO kit is
already installed. The ALPBASE kit will
make the system Y2K compliant.
NOTE: An OpenVMS saveset or PCSI installation file is stored
on the Internet in a self-expanding compressed file.
The name of the compressed file will be kit_name-dcx_vaxexe
for OpenVMS VAX or kit_name-dcx_axpexe for OpenVMS Alpha.
Once the file is copied to your system, it can be expanded
by typing RUN compressed_file. The resultant file will
be the OpenVMS saveset or PCSI installation file which
can be used to install the ECO.
Copyright (c) Compaq Computer Corporation 1997, 1998. All rights reserved.
WORKAROUND FOR COSMETIC ERROR INTRODUCED BY THIS KIT:
PROBLEM STATEMENT:
This kit fails to replace image LBRSHR.EXE in
SYS$COMMON:[SYSLIB]IMAGELIB.OLB.
PROBLEM SYMPTOM:
If you try to link against a routine in the LBRSHR image, the
following informational message can occur:
%LINK-I-DATMISMCH, creation date of d2-mmm-yyyy hh:mm in
shareable image
SYS$COMMON:[SYSLIB]LBRSHR.EXE;2 differs from date of
d1-mmm-yyyy hh:mm in Shareable image library
SYS$COMMON:[SYSLIB]IMAGELIB.OLB;2
The date d2-mmm-yyyy reflects the LBRSHR image left by the Y2K
ECO kit, while the d1-mmm-yyyy date reflects the date when
LBRSHR was last replaced in the library.
SOLUTION:
Execute the following DCL command to avoid getting the informational
message:
$ LIBRARY/REPLACE SYS$COMMON:[SYSLIB]IMAGELIB.OLB -
_$ SYS$COMMON:[SYSLIB]LBRSHR.EXE
OP/SYS: DIGITAL OpenVMS Alpha
COMPONENTS: CLUE$SDA
DECC$SHR
DUMP
EXCHANGE
F11BXQP
LIBRSHR
MTAAACP
TECOSHR_TV
VERIFY
VMS$REMEDIAL_ID
STARLET.OLB
SOURCE: Compaq Computer Corporation
ECO INFORMATION:
ECO Kit Name: ALPY2K01_071
ECO Kits Superseded by This ECO Kit: ALPVERI01_071 (V7.1 *ONLY*)
ALPF11X02_071
ALPACRT03_071
ECO Kit Approximate Size: 20448 Blocks
Kit Applies To: OpenVMS Alpha V7.1, V7.1-1H1, V7.1-1H2
System/Cluster Reboot Necessary: Yes
Installation Rating: INSTALL_1
1 - To be installed on all systems running
the listed version(s) of OpenVMS.
This kit does not need to be installed on
OpenVMS Alpha V7.1 systems if the current
version of the ALPBASE0x_071 ECO kit is
already installed. The ALPBASE kit will
make the system Y2K compliant.
NOTE: In order to receive the full fixes listed in this kit,
the following remedial kits also need to be installed:
None
ECO KIT SUMMARY:
An ECO kit exists for several components of OpenVMS Alpha V7.1. This
kit addresses the following problems:
These release notes identify certain conditions you should be
aware of when preparing your OpenVMS environment for the year
2000. This kit contains minor modifications to several older
components of the operating system; other conditions are simply
noted here, but need no changes. Release notes are included for
the following facilities that run on the OpenVMS platform:
o Crash Log Utility Extractor (CLUE) (Alpha only; see
Release Notes Section 2.1)
o EXCHANGE (See Release Notes Section 5.1.2)
o RSX-11 backwards compatible code:
- File system $QIO interface (See Release Notes Section 5.1.3.1)
- ODS-1 file format (VAX only; see Release Notes Section 5.1.3.2)
o Run-time libraries (See Release Notes Section 5.1.4)
o TECO editor (See Section Release Notes 5.1.5)
The TECO problem actually does not occur until 2028, but
Andy figured he'd just go right ahead and fix it for you now
because he expects to be retired by then!
o This kit also includes fixes unrelated to the year 2000 for the
Analyze/Disk_Structure utility, the Files-11 XQP file system,
and the DEC C Run-Time Library. These fixes were released earlier
in separate kits, but now have been incorporated into this kit.
Release notes from those kits are included in Appendix A.
o The CLUE history listing file contains a 2-digit year format in
its file name, which has this format:
CLUE$node_ddmmyy_hhmm.LIS
This file format poses no year 2000 problem in itself, but
the code that generates this date has been changed from using
a subtract operation to using a modulo function so that the
correct date will still be calculated in the year 2000. This
change has no visible effect on the file name format.
o When the EXCHANGE utility is used to transfer files between
OpenVMS and RT-11 or DOS-11 systems, date problems could occur
starting in the year 2004 for RT-11 and in the year 2036 for
DOS-11.
NOTE
RT-11 volumes are also used as console storage media on
certain older VAX systems.
o This kit contains an enhancement to EXCHANGE that makes the
RT-11 date format continue to function correctly until the year
2099.
NOTE
DIGITAL transferred the RT-11 operating system, along with
other PDP-11 software, to Mentec in 1994.
o The following sections describe conditions you should be aware
of if you interoperate with RSX-11 or if you use RSX-11 software
on your OpenVMS system.
o The file system $QIO interface supports several attributes for
RSX-11 compatibility. Of these, ATR$C_EXPDAT and ATR$C_ASCDATES
return the file creation date, revision date, and expiration
date using 2-digit years.
These attributes are not normally used by native code and can be
replaced with the following documented, compliant interfaces:
ATR$C_CREDATE
ATR$C_EXPDATE
ATR$C_REVDATE
The file system $QIO interface is provided by the following file
systems:
DIGITAL TCP/IP Network File System (NFS) client
Distributed File System (DECdfs)
Magnetic Tape ACP
OpenVMS ODS-1 file system (VAX only; see Release Notes,
Section 5.1.3.2)
OpenVMS ODS-2 file system
Spiralog file system (Alpha only)
o For RSX-11 compatibility, OpenVMS VAX supports ODS-1 file format
disk volumes. The ODS-1 file system uses a 2-digit year format
internally, and current implementations have limitations for the
year 2000.
ODS-1 data structures use a 2-digit year (ddmmmyy) in the
following items:
FI1$T_CREDATE
FI1$T_CRETIME
FI1$T_EXPDATE
FI1$T_REVDATE
FI1$T_REVTIME
HM1$T_CREDATE
The OpenVMS VAX file system and the following OpenVMS utilities
that support the ODS-1 file system format have been modified to
correctly interpret these 2-digit years until the year 2057:
Analyze/Disk_Structure Utility
Backup Utility
Dump Utility
Librarian (LBR) routines
Magnetic tape ACP
NOTE
Even though we are updating the ODS-1 code for the year
2000, DIGITAL strongly recommends that users of ODS-1
formatted media move to a newer file format by the year
2000.
o The following sections describe year 2000-related conditions in
the run-time libraries.
- In the run-time library, the LIB$CONVERT_DATE_STRING routine
allows the user to select a 2-digit year format (as well as
many others). This routine interprets 2-digit years as belonging
to the century in which the system is currently running
(according to the system clock). For example, in the 1900s, 61
is interpreted as 1961, and starting January 1, 2000, 61 will be
interpreted as 2061. If this behavior could produce unexpected
results on your system, select one of the alternatives to the
2-digit year format.
NOTE
This behavior has been documented in the OpenVMS RTL
Library (LIB$) Manual since Version 6.0, so we will not
change the code. No customer should be penalized for
reading the documentation and complying with our stated
intentions!
o The following release notes describe year 2000-related conditions
in the DEC C Run-Time Library.
NOTE
This kit also contains DEC C RTL fixes not related to
the year 2000. These fixes were previously released in a
separate kit. Release notes for those fixes are included
in Section A.3.
o In OpenVMS Versions 7.0 and 7.1, the DEC C Run-Time Library
function times() returns the number of clock ticks since
boot time. A clock tick is 1/100th of a second, which allows
the routine to represent approximately 250 days. Therefore,
an error can occur if you set the system clock ahead more
than 250 days to perform year 2000 testing.
The DEC C Run-Time Library has changed the reference point
from SYI$_BOOTTIME to JPI$_LOGINTIM to avoid this testing
error.
o Some XPG4 locales in the DEC C Run-Time Library display dates
with 2-digit years. These are coded in accordance with the
X/Open Company Limited specification and cannot be changed.
For your information, the following locale source files in
the Alpha ACRTL facility and the VAX CRTL facility use %y to
denote a 2-digit year:
DA_DK_ISO8859-1.LSRC
DE_CH_ISO8859-1.LSRC
DE_DE_ISO8859-1.LSRC
EN_US_ISO8859-1.LSRC
ES_ES_ISO8859-1.LSRC
FI_FI_ISO8859-1.LSRC
FR_BE_ISO8859-1.LSRC
FR_CA_ISO8859-1.LSRC
FR_CH_ISO8859-1.LSRC
FR_FR_ISO8859-1.LSRC
IS_IS_ISO8859-1.LSRC
IT_IT_ISO8859-1.LSRC
IW_IL_ISO8859-1.LSRC
NL_BE_ISO8859-1.LSRC
NO_NO_ISO8859-1.LSRC
PT_PT_ISO8859-1.LSRC
SV_SE_ISO8859-1.LSRC
o This kit includes two minor changes to the TECO editor.
- The date value in the TECO editor has been extended to a
longword so that the year value returned by the Ctrl/B
function will not overflow on 01-JAN-2028.
- This kit also fixes a TECO problem that is unrelated to
dates. The UIC value returned by the 2EJ function was
incorrect if the process UIC had a group or member number
greater than 377.
For compatibility reasons, the 2EJ value cannot be changed.
However, the problem has been fixed by the following
changes:
* All group and member numbers that exceed a byte are now
mapped to 377 (octal).
* A 3EJ function has been implemented to return the longword
UIC.
The following TECO example demonstrates the change.
NOTE: The ESCAPE () sequence can be entered on most
keyboards by typing Ctrl/[.
$ SET UIC [1234,567]
$ TECO
*3EJ/65536==
1234
*3EJ&65535==
567
Problems Addressed in the ALPVERI02_071 Kit:
o The ALPVERI01_071 remedial kit, which applied to V6.1 through V7.1
is being reissued as single version kits. There are no new fixes in
this kit. If you have installed the ALPVERI01_071 remedial kit you
do not need to install this kit.
Problems Addressed in the ALPVERI01_071 Kit:
o ANALYZE/DISK goes into an infinite loop.
VERIFY has incorrectly 'fixed' the backlink of a lost directory to
point to itself. The next time VERIFY is run, it encounters the
lost directory and goes into a tight loop following the directory's
backlink.
PROBLEMS ADDRESSED IN ALPF11X02_071 KIT FOR OPENVMS V7.1
o The problem occurs when we fail to get the access lock on a
newly created file. This happened because the previous
version of the file had been deleted while it was still
accessed, and the new version created before the access lock
was dropped.
The file could be deleted while it was still accessed because
a stale directory FCB with the same FID was left on the queue,
and the delete operation found this FCB rather than the real
FCB of the file.
o Bad FID bugcheck when trying to mark a file header free in the
index file bitmap.
Multiply allocated blocks and file headers on disk. Processes
hanging in an RWAST state while trying to deaccess a file
during channel deassignment. System hangs during cluster wide
cache flushes.
o Two coding errors were caught during code review. They are
thought to represent very rare failure modes and have not been
matched to any known problem footprints.
- The contents of a header or bitmap block could be corrupted
within the block buffer cache.
- Failure to take an allocation lock could be ignored.
o If a DEACCESS request failed with a SS$_DEADLOCK error, a
process could be left in RWAST state indefinitely.
o If a large file is created on a fragmented disk with quotas
enabled and the user needs to use EXQUOTA privilege to allocate
the necessary disk space, an internal XQP table can become
corrupted leading to SECAUDERR, Fatal error attempting to
perform a security audit bug-checks.
o Superseding a file with a version limit set can remove the
oldest version of a file even if that version is undeletable by
the user according to its protection mask or ACL. The file is
removed but not deleted, and can be recovered by
o Attempting to queue a maximal length (39.39;5) filename to the
XQP for spooling to a symbiont would cause either an infinite
CPU loop or a FILCNTNONZ, Open file count nonzero after process
rundown bugcheck.
PROBLEMS ADDRESSED IN ALPF11X01_071 KIT FOR OPENVMS V7.1
o The problem occurs when a file is deleted while still being
accessed by someone. This produces an XQPERR bugcheck when an
attempt is made to access the deleted file.
o The problem may result in an XQPERR bugcheck which claims that:
"all the index buffers are active" during the processing of a
directory file.
The problem occurs when no free directory index BFRD's are
found on the first pass through MAKE_DIRINDX. The thread then
stalls to allow some of the BFRD's to be freed, but doesn't
release the cache lock which would allow others to do this.
This means that if no free BFRD was found on the first try then
none will be found on subsequent tries either, and the bugcheck
will occur.
o The fault occurs as a UNXSIGNAL Bugcheck after running autogen,
and rebooting with very large SYSGEN ACP cache parameters.
The problem occurs when the calculation of DIRINDX in
RELEASE_LOCKBASIS overflows. This is due to a multiplication
taking place before a division, which overflows when more than
87381 blocks have been allocated between the ACP_MAPCACHE,
ACP_DIRCACHE and ACP_HDRCACHE caches.
Problems addressed in ALPACRT03_071:
o Users have requested that kill support the POSIX semantics of
"if the process id is negative but not -1, the signal will be
sent to all processes whose group ID is equal to the absolute
value of the process id, and for which the process has
permission to send a signal." This has been added with the
restrictions that the process is executing on the same node and
does not have a SYSTEM UIC. The errno value is set to ESRCH if
no processes are found which match the condition specified.
o An enhancement was made in the DEC C V5.6 compiler to optimize
certain format strings passed to the printf family of library
functions. This ECO kit adds the runtime support to the
shareable image. Prior to this, the symbols were resolved via
objects added to STARLET by the compiler. Full details of this
support can be found in the DEC C V5.6 release notes.
o The performance of DEC C sprintf was much slower than VAX C.
An analysis of the printf engine resulted in changes which
brings DEC C within 10% of VAX C.
o The functions fopen and freopen were mapping invalid access
modes to read mode. Invalid modes now cause errno to be set to
EINVAL and the open call to fail.
o The times function was changed in OpenVMS V7.0 to return the
number of clock ticks since boot time. Performing year 2000
testing by setting the system time forward causes this return
value to overflow. The times function has been changed to
return the number of clock ticks since login time, which is
less likely to overflow.
o The lseek function may position incorrectly with repeated calls
to seek, in a file containing fixed length records of odd
length. This problem does not occur with even length or
variable length records.
o Mailbox devices are record oriented devices, except when
created by the pipe function where they are opened as stream
devices. Applications which use mailboxes can now force the
library to treat all mailboxes as stream devices by creating an
environment variable named DECC$MAILBOX_CTX_STM.
o The runtime library has been corrected to treat UNIX directory
specifications identically in each of the routines which accept
a directory specification as a parameter. These runtime
library functions are access, opendir, mkdir, and rmdir. Prior
to this change, one could call opendir with "/dev/dir", but was
forced to append ".dir" to this when calling the access
function.
o This ECO kit includes major performance improvements when using
time related functions along with Universal Coordinated Time.
o A cache of values has been added to the getenv function to
avoid the library making repeated calls to translate a logical
name or to obtain a symbol value for environment variables
which are not set. If your application makes direct calls to
set logical names, this caching can be disabled by defining
DECC$DISABLE_GETENV_CACHE prior to calling any runtime library
functions.
o The ANSI standard states that streams opened in update mode may
read and write to the stream. It further states that reads
must be followed by file positioning prior to writing to the
stream. The problem corrected was that positioning functions
would fail when the file was a terminal. Applications may now
position such streams back to the beginning using either rewind
or seek.
o It was reported that opendir overflowed the stack when running
in a threaded application. While correcting this problem, the
opendir successful return value was changed from one to zero to
align with the X/Open Specifications.
o A problem introduced in OpenVMS V7.1 causes the first record of
a file to be overwritten when the file is opened in append
mode. The correct behavior is that all write operations are
done at the end of the file.
o Porting code to OpenVMS is hampered by the difference between
command procedures and executable images and the mechanisms
necessary to invoke them. When passed the string "TEST", the
exec functions now searches for "TEST.","TEST.EXE", and
"TEST.COM". If found, it is executed as either an image or a
command procedure, depending on information in the file header.
o Several new universals have been added to the DECC$SHR image
shipped with this ECO kit. The presence of these universals
may affect application developers who compile using this image.
If a developer begins to get errors of the form
%LINK-W-MULDEF, symbol DECC$XXX multiply defined
in module DECC$SHR file SYS$COMMON:[SYSLIB]DECC$SHR.EXE;1
while linking the application, the compile command should be
modified to include "/PREFIX=EXCEPT=XXX". This instructs the
compiler to exclude this function when doing name prefixing,
which is equivalent to the behavior prior to this ECO kit.
o The printf function was enhanced to print "(null)" when passed
a null pointer to be used with the "%S" format specifier.
Prior to this, the DEC C RTL would issue an access violation
error.
o Several functions were found to not accept the angle bracket
form of directory specifications. These functions include
decc$translate_vms and stat, which now accept either square
brackets or angle brackets in the directory portion of file
specifications.
o The exec functions use a mailbox to coordinate open file
information between the parent and child processes. A user
reported their system hung after 1000 successful invocations of
the same child process. This hang was caused by the parent
process failing to release an exclusive mode lock being used to
coordinate access to the mailbox. The hang would occur when a
mailbox was assigned to the parent process for a second time.
o A user reports calling ioctl sets errno to ENOSYS (Function not
implemented). Beginning with OpenVMS V7.0, the library looks
for support in the underlying TCPIP stack and sets this error
if the support is not found. The function has been enhanced to
execute UCX$EXAMPLES:UCX$IOCTL_ROUTINES under these conditions.
o The decc$to_vms function has been enhanced to recognize names
found on other systems, converting "/dev/null" to "NLA0:",
"/tmp" to "SYS$SCRATCH:", and "/bin" to "SYS$SYSTEM:".
o The getpwnam function now uppercases the username parameter if
it is not found in its original form. Prior to this change,
the function would fail.
Problems addressed in ALPACRT02_071:
o Those functions, such as printf, which have thread specific
data incorrectly use the threads interface to release that
memory when a thread is being destroyed. The result is that
all thread specific memory is lost.
o The read, fread, write, and fwrite DEC C RTL functions now
return unsuccessful status with errno set to EINVAL if one of
the arguments of size_t type or total number of bytes to be
transmitted is not in the range 0 to INT_MAX. The total number
of bytes is the product of the size_of_item and number_items
arguments for fread and fwrite functions. The value of INT_MAX
is defined in the header file.
o The interval timer function, setitimer, fails to reset itself
when used in a multithreaded application. The result is a
single firing of the timer as opposed to repeated firing of the
timer at fixed intervals.
o A change made in OpenVMS V7.1 and remedial kits to other
versions cause calls to the mktemp function using templates of
the form "dumpXXXXXX.txt" to no longer substitute the pattern
with the process id. While a change is necessary to prohibit
substituting the directory portion in a template such as
"[XX]dumpXXXXXX", the change that was made was overly harsh,
forcing all substitution to the end of the pattern.
o The strstr function accesses memory beyond the ends of the
strings passed. In cases where the next page is not
accessable, the result is an access violation. The problem was
reported against the ADA compiler, which uses the strstr
function in this way.
o Although files in general are correctly inherited after a
fork/exec function call, files which are opened in any sort of
sharing mode are not.
o The ECO kits ALPACRT01_071 and VAXACRT01_071 made changes to
the return value of the puts and fputs routines. While these
changes were in line with the documentation, which states that
they return non-negative numbers on success, specific
applications were coded to expect zero as success. Since this
zero return value was documented with the VAXC product, we have
restored the original behavior.
o When accessing files in stream mode, closing the file may
result in an extra byte being written to the file. While this
byte is not seen using the type command, it may be seen when
using the dump utility.
o A customer reports that the functions atof, strtod, and wcstod
incorrectly return HUGE_VAL values when compiling with the
IEEE_FLOAT and an ieee_mode qualifier of DENORM_RESULTS. The
results returned have been modified to take the compilation
mode of the calling program into account. The return value can
now be compared against HUGE_VAL.
o The following code segment demonstrates a problem in the printf
family of functions running on OpenVMS for Alpha.
double n;
for (n = 9.0e16; n < 11.0e17; n += 1.0e+17)
printf ("%20.0f\n", n);
The result is that the final zero is missing in the display of
all but the first and last line.
Problems Addressed in ALPACRT01_071:
o Calling stat from two separate threads will cause them to
interfere with one another. The stat function has been
modified to use a thread-specific buffer to store data.
o Extra characters are seen on occasion when using a
subprocess which sends data back to the parent process
using a mailbox.
o A case has been found where the fseek function fails,
correctly returns -1 value, but fails to set errno properly.
o One of the arguments to the decc$to_vms function is "allow_wild"
which is documented to accept the values zero and one. If
wildcards are used in the file specification, they are either
rejected or expanded into the resultant file specifications.
Passing a value of -1 for the allow_wild parameter now returns
the file specifications with the wildcards intact, but after
having prepared to the point of doing a sys$search.
o Unlike Digital UNIX, the fsync(socket_id) call results in an
access violation instead of returning an EINVAL status.
o A user reports and demonstrates that opening and closing
sockets does not properly release mutexes which eventually
causes the resource to be exhausted. This problem was
introduced in OpenVMS V7.0.
o Applications which call opendir and readdir recursively
to traverse subdirectories may end up in an infinite loop
when reading the directory which includes returning the
[000000]000000.DIR. The readdir function no longer returns
an entry which is equivalent to the directory being read.
o OpenVMS V7.1 changed the behavior of the readdir function
so that it no longer retains the ".dir" extension when
returning a directory using the UNIX file syntax. Applications
which rely on this extension can now define a the
DECC$READDIR_KEEPDOTDIR logical to restore this behavior.
o Beginning with OpenVMS V7.1, the DEC C Runtime Library does
not read the first record while opening the file if such
preloading will cause RMS to lock the record. Several reports
have been made which stated that images which used to work
fine now fail. The preloading code record has been modified
to take these programs into account.
Y2K
Year 2000
INSTALLATION NOTES:
In order for the corrections in this kit to take effect, the system must
be rebooted. If the system is a member of a VMScluster, the entire
cluster should be rebooted.
During the kit installation you will be prompted with options to print
and/or display the release notes.
You may also see the following messages during the installation
procedure:
%INSTALL-E-NODELSHRADR, unable to delete image with shareable
address data
-INSTALL-I-PLSREBOOT, please reboot to install a new version of
this image
Do not be concerned. These messages announce that DECC$SHR.EXE was
installed as a resident image, which is the standard configuration
for OpenVMS Version 7.1 systems. The new image will take effect when
the system is rebooted.
This patch can be found at any of these sites:
Colorado Site
Georgia Site
Files on this server are as follows:
alpy2k01_071.README
alpy2k01_071.CHKSUM
alpy2k01_071.CVRLET_TXT
alpy2k01_071.a-dcx_axpexe
|