OpenVMS VAXACRT01_072 VAX V7.2 DEC C RTL ECO Summary
TITLE: OpenVMS VAXACRT01_072 VAX V7.2 DEC C RTL ECO Summary
Modification Date: 23-SEP-1999
Modification Type: New Kit
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 1999. All rights reserved.
OP/SYS: OpenVMS VAX
COMPONENT: DEC C RTL
DECC$SHR.EXE
CRTL.OBJ (new file - updates STARLET.OBJ)
CRTLMSGDEF.OBJ (new file - updates STARLET.OBJ)
ACRT$ECO_DROP.COM (new file - removes this kit)
SOURCE: Compaq Computer Corporation
ECO INFORMATION:
ECO Kit Name: VAXACRT01_072
ECO Kits Superseded by This ECO Kit: None
ECO Kit Approximate Size: 4032 Blocks
Kit Applies To: OpenVMS VAX V7.2
System/Cluster Reboot Necessary: Yes
Rolling Re-boot Supported: Yes
Installation Rating: INSTALL_3
3 - To be installed on all systems running
the listed versions of OpenVMS which
are experiencing the problems described.
Kit Dependencies:
The following remedial kit(s) must be installed BEFORE
installation of this kit:
None
In order to receive all the corrections listed in this
kit, the following remedial kits should also be installed:
None
ECO KIT SUMMARY:
An ECO kit exists for the DEC C RTL on OpenVMS VAX V7.2. This kit
addresses the following problems:
o The getenv() function has been corrected to check for a
Command Line Interpreter (CLI) symbol only when called
in user access mode. While DEC C RTL is a user-mode run
time library, a decision was made to correct getenv() in
order to make the library more robust. The reason for this
change is because calling the CLI from within exec or kernel
mode may result in an access violation.
With this fix, when called from inner access mode, the
getenv() function will search only the C environment list
and OpenVMS logical names.
This fix does not mean however that the user-mode only
restriction was lifted. It is still unsupported to call
the DEC C RTL functions, including getenv(), in any access
mode other than in user-mode.
o The strptime() function has been modified to comply with
X/Open CAE Specification System Interfaces and Headers
Issue 5 (commonly known as XPG5). In XPG5, how the
strptime() function processes the "%y" directive was changed
for a two-digit year within the century, if no century is
specified.
According to XPG5, for the "%y" directive, when a century is
not otherwise specified, values in the range 69-99 refer to
years in the twentieth century (1969 to 1999 inclusive), while
values in the range 00-68 refer to years in the twenty-first
century (2000 to 2068 inclusive). Essentially, for the "%y"
directive, strptime() became a "pivoting" function with 69
being a pivoting year.
Before this change, the strptime() function was always
interpreting a two-digit year with no century as a year
within the twentieth century.
With the current ECO kit, XPG5-compliant strptime() becomes
a default strptime() function in the DEC C RTL. However,
for compatibility reasons, the previous "non-pivoting"
XPG4-compliant strptime() function was retained.
The "pivoting" is controlled by the DECC$XPG4_STRPTIME logical
name. Defining this logical name prior to invoking the
application (any equivalence string) will cause the DEC C RTL
to use the "non-pivoting" flavor of strptime(). Also,
"non-pivoting" strptime() can be called directly as the
decc$strptime_xpg4() function.
While there is an easy way to disable "pivoting" by just
defining a logical name, you should be aware that if the
application ceases to work correctly due to the change in
the strptime() function, it almost certainly means that
there is a Y2K problem in the application. Y2K-safe
applications should not be affected by the change in strptime().
o The stat() function has been corrected to process file
specifications such as "foo:[000000]", where foo is defined
as a concealed device like the following:
$ define/trans=(conc) foo device:[bar.]
Prior to this fix, the stat() function would fail for such a
file specification with errno set to ENOENT (No such file or
directory).
o Both flavors of the system() function were corrected to ensure
that the function always returns the correct status.
The POSIX-compliant system() function has been corrected to
always return a status corresponding to the signal, which
terminated the child process if the child process was
terminated due to receiving a signal.
Prior to this fix, there was a small timing window when the
function could return the status corresponding to the child
process completion code, even in the case when the child
process was terminated by a signal.
The Non-POSIX system() function has been corrected to always
return the OpenVMS completion code of the child process.
Prior to this fix, there was a small timing window when the
function could return the status from LIB$SPAWN(), instead of
the completion code of the child process.
o The opendir() and readdir() functions have been corrected to
process directories on a remote node specified using the
following DECnet file specification:
nodename"username password"::device:[directory]
Prior to this fix, opendir() could fail with errno set to
ENOTDIR (Not a directory). In the case when opendir() could
successfully open the directory, the readdir() function could
return incorrect file names.
o The times() and clock() functions have been modified to be
both thread-safe and AST-reentrant.
Prior to this change, these functions belonged to the class of
functions which are thread safe, but not AST-reentrant (see
section 1.7.2 Multithread Restrictions in the DEC C RTL
Reference Manual).
The change in the reentrancy status of the times() and clock()
functions will be reflected in the next release of the Manual.
o The stat() function no longer fails due to the failure of the
mktime() function.
It was reported that the stat() function fails for a file
created on April 4th 1999 at 2:04 a.m. EST, which is the
"missing hour" in the transition from standard to daylight
saving time in the Eastern time zone.
The problem was due to the failure of the mktime() function to
process the "missing hour" (stat() calls mktime() to fill
st_?time members of the stat structure with the UTC time).
While the mktime() function was not fixed, the stat() function
was corrected to handle the failure of mktime() and set
st_?time fields correctly, even if mktime() fails.
Note, that, strictly speaking, "missing hour" is an invalid
input for mktime(): there is no such time as "April 4th 1999
2:04 a.m.", for example, in the Eastern time zone. Given the
possibility of calling mktime() with an invalid time, the
stat() function probably should not have used mktime() in the
first place or at least should have been prepared for an
o The select() function has been corrected to return a failure
status if either an invalid file descriptor or file descriptor
not associated with a socket is found in one of the specified
file descriptor sets. In the case of an invalid file
descriptor, the select() function sets errno to EBADF. In
case of a file descriptor not associated with a socket, the
function sets errno to ENOTSOCK.
Failure with errno set to EBADF is the standard requirement
for the select() function. Failure with errno set to ENOTSOCK
occurs because the select() function can currently operate
only on sockets.
Prior to this fix, the function was setting errno as described
above, but otherwise was ignoring invalid file descriptors and
file descriptors not associated with sockets.
The old behavior can be requested by defining the logical name
DECC$SELECT_IGNORES_INVALID_FD prior to invoking the
application (any equivalence string).
o The problem commonly known as the "Y2038 bug" has been fixed.
The C run-time library time functions, which access the
current time using the OpenVMS time functions, have been
corrected to handle times after 19-Jan-2038 3:14:07. Data
type time_t is defined on OpenVMS as an unsigned 32-bit
integer. However, some of the functions which retrieve
current time from the system and convert it to time_t format
were using signed arithmetic.
This fix affects the functions:
o decc$fix_time()
o time()
o ftime()
o gettimeofday()
o getclock()
With this fix, DEC C RTL time functions will handle times
successfully until 07-Feb-2106 06:28:15.
o The printf() family of functions have been enhanced to perform
better when the calling application has exhausted available
memory.
o The file access functions have been corrected to process
file names on UNIX systems over DECnet. The file name for
a file on a UNIX system accessed over DECnet was being
converted to uppercase, even when the name was enclosed in
double quotes. This problem was introduced on OpenVMS V7.2
and also affects OpenVMS V7.1-2 and OpenVMS V7.2-1. File
names of the form node::"dir/name" are now processed correctly.
INSTALLATION NOTES:
The images in this kit will not take effect until the system is
rebooted. If there are other nodes in the VMScluster, they must
also be rebooted in order to make use of the new image(s).
If it is not possible or convenient to reboot the entire cluster at
this time, a rolling re-boot may be performed.
REMOVAL INSTRUCTIONS:
Remove this kit and restore the original files and libraries by
logging into the SYSTEM account and typing the following at the DCL
prompt (the CMKRNL privilege is needed in order to execute this
command procedure):
@SYS$UPDATE:ACRT$ECO_DROP
NOTE:
ACRT$ECO_DROP.COM INSTALLs the earlier version of DECC$SHR.EXE.
However, the earlier version will not take effect until the system
is rebooted. A reboot MUST be done as part of the removal process.
Otherwise, the system may be left in an inconsistent state.
To remove the kit from an OpenVMS cluster node, the ACRT$ECO_DROP.COM
file must be run and a reboot MUST be performed on any system disk
upon which the kit was installed.
All trademarks are the property of their respective owners.
This patch can be found at any of these sites:
Colorado Site
Georgia Site
Files on this server are as follows:
vaxacrt01_072.README
vaxacrt01_072.CHKSUM
vaxacrt01_072.CVRLET_TXT
vaxacrt01_072.a-dcx_vaxexe
vaxacrt01_072.CVRLET_TXT
|