OpenVMS VAXY2K01_071 VAX V7.1 Year 2000 ECO Summary
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) Digital Equipment 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: OpenVMS VAX and OpenVMS/Japanese VAX
COMPONENTS: BACKUPSHR
DECC$SHR
DUMP
EXCHANGE
F11AACP
F11BXQP
LIBRSHR
MTAAACP
STABACKUP
TECOSHR
VERIFY
VMS$REMEDIAL_ID
STARLET.OLB
SOURCE: Digital Equipment Corporation
ECO INFORMATION:
ECO Kit Name: VAXY2K01_071
ECO Kits Superseded by This ECO Kit: VAXVERI01_071
VAXF11X02_071
VAXACRT03_071
ECO Kit Approximate Size: 5958 Blocks
Kit Applies To: OpenVMS VAX V7.1
OpenVMS/Japanese VAX V7.1
System/Cluster Reboot Necessary: Yes
Installation Rating: 1 - To be installed on all systems running
the listed version(s) of OpenVMS.
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:
This kit provides Year 2000 enhancements for OpenVMS VAX
Version 7.1.
The following 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.
o EXCHANGE Utility:
* 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.
* 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 File System $QIO Interface:
* 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
OpenVMS ODS-2 file system
o Utilities that Support the ODS-1 File Format:
* 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 LIB$ Run-time Library:
* 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.
o 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.
* 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.
* 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 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).
+ An 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 VAXVERI01_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 the VAXF11X02_071 Kit:
o An XQPERR bugcheck occurs when trying to create a file.
This problem occurs because it is possible to leave stale directory
FCBs (File Control Blocks) on the FCB queue if they still have
DIRINDX cache blocks attached. If this happens, then SCHFCB will
return the address of the stale FCB instead of the current FCB for
the FID (or zero if there is no current FCB for the FID (File ID).
o A bad FID bugcheck occurs when trying to mark a file header free in
the index file bitmap.
o There are multiply allocated blocks and file headers on the disk.
o Processes hang in an RWAST state while trying to deaccess a file
during channel deassignment.
o The system hangs during cluster wide cache flushes.
o The contents of a header or bitmap block could be corrupted within
the block buffer cache.
o 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 an RWAST state indefinitely.
o If a large file is created on a fragmented disk that has quotas
enabled and the user needs to use EXQUOTA privilege to allocate the
necessary disk space, an internal XQP table can become corrupted.
This leads to the following bugcheck:
SECAUDERR, Fatal error attempting to perform a security audit
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 ANALYZE/DISK/REPAIR.
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 the following bugcheck:
FILCNTNONZ, Open file count nonzero after process rundown
Problems Addressed in the VAXF11X01_071 Kit:
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.
o The fault occurs as a UNXSIGNAL Bugcheck after running AUTOGEN, and
rebooting with very large SYSGEN ACP cache parameters.
Problems addressed in VAXACRT03_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 The performance of DEC C sprintf was three times 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.
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 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 search 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 the VAXACRT02_071 Kit:
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
accessible, 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.
Problems addressed in the VAXACRT01_071 Kit:
o The stat function now uses a thread specific buffer to store
data. Prior to this correction, stat called from two
separate threads would interfere with one another.
o An ISV reports that extra characters are seen on occasion
when using a subprocess that sends data back to the parent
process using a mailbox.
o A case was found where the fseek function fails. It
correctly returns a -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 Opening and closing sockets does not properly release mutexes.
This problem which was introduced in OpenVMS V7.0 eventually
causes the mutex resources to be exhausted.
o Applications which call opendir and readdir recursively to traverse
subdirectories may end up in an infinite loop when reading the
directory that includes returning [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 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 users
have reported that images which used to work fine now fail.
The record preloading code has been modified to take these
user programs into account.
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
This patch can be found at any of these sites:
Colorado Site
Georgia Site
Files on this server are as follows:
vaxy2k01_071.README
vaxy2k01_071.CHKSUM
vaxy2k01_071.CVRLET_TXT
vaxy2k01_071.a-dcx_vaxexe
|