Updated: 24-SEP-2003 (Use your browsers' Reload button to ensure you're viewing the most recent version)
VAXACRT12_062 VAX V6.2 DEC C RTL ECO Summary [ON HOLD]
Kit is ON HOLD
Alternate kit is VAXCRTL11_062
Note we do not expect further updates
Copyright (c) Compaq Computer Corporation 1996, 1999. All rights reserved.
******************** ON HOLD ********************
* *
* OpenVMS Engineering is currently researching *
* a problem with this ECO and requested that it *
* be placed on hold. *
* *
* This kit will never be taken off hold. *
* Please refer to VAXCRTL11_062. *
* *
***************************************************
Modification Date: 10-NOV-2000
Modification Type: Kit Placed on Hold. Please see VAXCRTL11_062
for the most recent fixes for OpenVMS VAX V6.2.
PRODUCT: OpenVMS VAX
COMPONENT: DEC C RTL - DECC$SHR.EXE
LOCALEDEF.EXE
CTRL.OBJ (Updates STARLET.OLB)
CRTLMSGDEF.OBJ (Updates STARLET.OLB)
CRTL$ECO_DROP.COM (Removes Kit)
SOURCE: Compaq Computer Corporation
NOTE: In order to maintain consistency between this series of ECO
kits and the OpenVMS Alpha series of DEC C RTL ECO kits, the
name of this kit is VAXACRT12_062 instead of VAXCRTL12_062.
ECO INFORMATION:
ECO Kit Name: VAXACRT12_062
ECO Kits Superseded by This ECO Kit: VAXCRTL11_062
VAXACRT10_062
VAXACRT09_062
VAXACRT08_062
VAXACRT07_062
VAXACRT06_062
VAXACRT05_062
VAXACRT04_062
VAXACRT03_062
VAXACRT02_062
ECO Kit Approximate Size: 3186 Blocks
Kit Applies To: OpenVMS VAX V6.2
System/Cluster Reboot Necessary: Yes
Rolling Reboot Supported: Yes
Installation Rating: 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 the all the corrections listed in this
kit, the following remedial kits should also be installed:
None
ECO KIT SUMMARY:
An ECO kit exists for DEC C RTL on OpenVMS VAX V6.2. This kit addresses
the following problems:
Problems Addressed in the VAXACRT12_062 Kit:
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
mktime() failure.
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.
Problems Addressed in the VAXCRTL11_062 Kit:
o Sometimes a call to sigvec function may cause an application to
hang. The reason for the hang is that, under some conditions,
the sigvec function fails to release mutexes. So, when called
the next time, the function is trying to acquire already locked
mutexes. This results in placing the process in hibernate
state when running in MULTITHREAD reentrancy mode.
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 The setlocale function was enhanced to detect the situation
where run-time support for specified locale is not available on
the system. Prior to this, the function would successfully
load the locale, but a call to mbtowc function, for example,
would result in access violation.
Problems Addressed in the VAXACRT10_062 Kit:
o Repeatedly calling seek functions involving files containing
fixed length records, whose length is odd, may result in
incorrect positioning.
o Except for those created by calling the pipe function, mailbox
devices are considered record oriented devices . This limits
these solutions to those applications whose child process is
also a C program. The RTL now checks for the presence of an
environment variable "DECC$MAILBOX_CTX_STM" which, if defined,
tells the RTL not to add additional data to the mailbox data.
o The ANSI standard states that streams opened in update mode
may read and written to. It also states that reads must be
followed by a file positioning call prior to writing to the
stream. While devices such as terminals do not allow random
position, all streams now allow positioning to the beginning,
regardless of device type.
o The access function would incorrectly examine the SYSTEM
protection codes and use those codes in determining if access
would be allowed.
Problems Addressed in the VAXACRT09_062 Kit:
o Customers who installed the previous ECO kit for OpenVMS V6.2
(VAXACRT08_062), have reported problems accessing VFC (Variable
Fixed-length Control) files. The symptom is incorrect data when
reading the first record of the file.
o The printf function has been corrected to properly initialize a work
buffer during the format string processing. Prior to this change,
the processing of a format specifier could result in data from the
last specifier processed remaining in the buffer. This problem was
reported as fixed in the ALPACRT04_062 and VAXACRT04_062, but
continued testing showed that the problem still exists.
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.
A child process created by exec* function fails to inherit the file
opened by the parent for shared access.
o Unlike Digital UNIX, calling the fsync function with a socket
descriptor results in an access violation. The correct behavior is
to set errno to EINVAL (Invalid Value) and return a failure status.
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.
5.6 Control character remains disabled after image exit
5.6.1 Problem Description:
o The runtime library disables control_y for a process when a call is
made to the signal function instructing it to ignore SIGINT signals,
but does not restore control_y state on image exit, so that after
image rundown they remain disabled.
Note that the during image rundown, the runtime library restores the
state to that which existed when they were disabled. Applications
which make calls to the LIBRTL routines LIB$DIS/ENABLE_CTRL after
calling signal may have these changes discarded on image exit.
Problems Addressed in the VAXACRT08_062 Kit:
o An ISV (Internet Service Provider) reports that extra <lf>
characters are seen on occasion when using a subprocess which sends
data back to the parent process using a mailbox.
o A case was found where the fseek function failed, correctly returned
a -1 value, but failed to set errno properly.
o A user migrating to OpenVMS V6.2 is having difficulty processing
VFC (Variable Fixed-length Control) files. Calling the fgetc
function results in the error RMS-W-RTB which is "record too
large for user's buffer". In addition, carriage control
information in PRINT VFC files is not interpreted correctly
resulting in superfluous or missing blank lines when the contents
are displayed to a terminal.
Problems Addressed in the VAXACRT07_062 Kit:
o Testing of the printf function showed that the conversion of
"printf("%.9sn",s)" will access all 9 characters of the string even
if the null terminator is earlier in the string. If the terminator
is at the end of a page and the next page is a protected page, an
access violation will result.
o Extra <lf> characters may be written to stdout under the conditions
that the application is reading from stdin and it is not a terminal.
The extra characters appear random in the output, but in fact are
written each time a new record is read from stdin.
o An application which closes either stdin, stdout, or stderr, and
then reopens it using the dup function may not have the file
actually closed if I/O is not done using the file descriptor. A
workaround is to force I/O on the file by using a function call such
as sync or flush.
Problems Addressed in the VAXACRT06_062 Kit:
o A change occurred in how fseek works with fixed length odd byte
record lengths. The description of fseek in the RTL Reference
Manual says:
"The function can position fixed-length record-access file
with no carriage control or a stream-access file on any
byte offset, ....".
Using OpenVMS V6.1, the phrase "on any byte offset", did not include
the pad byte that RMS keeps on disk between records of odd length in
fixed length record format sequential files. By the time of OpenVMS
V6.2, the phrase "on any byte offset" apparently includes that pad
byte.
o The qsort function no longer access violates when sorting a large
number of records. This was demonstrated by sorting 1966079 records
whose values were 1 through 1966079. The qsort function can now
sort the maximum number of records.
o The DEC C Runtime Library had previously added the ability for users
to define the logical name DECC$DEFAULT_LRL to change the default
longest record length value on stream files. A problem existed such
that defining this logical name to zero resulted in files which had
fixed length records instead of stream_lf records.
o A problem in the way the timer functions, such as sleep and alarm,
was introduced into OpenVMS V6.2. This family of functions has been
rewritten to no longer lose Timer Queue Entries.
o The rewind function is documented to write all buffered output and
discard all buffered input prior to rewinding the file. Under
certain situations, the buffer was not being flushed to disk.
o In the access function, the user_group and user_member components
are no longer truncated when they are larger than 255. In addition,
the system group now abides by the MAXSYSGROUP SYSGEN parameter.
Problems Addressed in the VAXACRT05_062 Kit:
o The RAB size for the LRL (longest record length) was incorrectly set
to -1 when the value was greater than the maximum allowed value -
greater than 8K. An invalid fseek was therefore performed.
Problems Addressed in the VAXACRT04_062 Kit:
o Calls to execve with a parameter or environment list larger than 127
bytes fails.
o Poor performance or failure when attempting to SORT a Stream_LF file
with variable length records.
o DECC$TO_VMS doesn't recognize hyphens in VMS file names resulting in
an aggravated difficulty to port software to VMS.
Problems Addressed in the VAXACRT03_062 Kit:
o OpenVMS V6.2 STARLET modified two symbols (SYS_ERRLIST and SYS_NERR)
to have DECC$ prefixes. These symbols were not able to be accessed.
The ability to access these symbols via external references was not
shipped with OpenVMS V6.2 and is included here.
Problems Addressed in the VAXACRT02_062 Kit:
o The DEC C RTL routine chdir fails when passed a logical search list.
o In the DSNlink and DIA C database, there is an article on how to
implement non-blocking pipes under OpenVMS. The article title is:
Example-C Implementing Non-Blocking Pipes Using VAX C RTL
This example fails under OpenVMS V6.2 and was introduced in an
earlier ECO kit for OpenVMS V6.1.
o When using fgets to read a remote file using DECnet, you get
different results than when reading an identical file locally.
o The function ungetc stopped working in OpenVMS V6.1 for both
variable and fixed length records.
o Using VAXC, the curses code fragment:
wmove(win, 1, 2); wprintw(win, "First line" );
wmove(win, 2, 2); wprintw(win, "Second line");
produces the output:
First line
Second Line
Using the compatible VMS Curses package provided by DECC on both VAX
and Alpha, the results are:
First lineSecond Line
o Issuing a call to getenv("TERM") would fail when used from a VT500
class terminal.
o If you were to run a program containing the following fragment on
OpenVMS V6.1, you would notice one file was created (test.file). A
second run would append to the file. If you run it on OpenVMS V6.2,
it created a new file every time. It did not append.
fp = fopen("TEST", "a", "dna=SYS$DISK:[].file");
o On slow systems, the return value from sleep (which is defined to be
how much of the time we did not sleep) could be a negative number if
we slept too long.
o Two locks may be obtained during I/O operations. In the fclose
function, lock A was obtained before lock B. In all other CRTL
functions lock B was obtained before lock A. Under adverse
conditions, deadlock results.
o The implementation of toupper/tolower was changed to use the value
supplied by the user to index into the table of lowercase
characters. DEC C RTL was incorrectly using only 7 bits instead of 8.
o When using fflush/fsynch with DEC C the "stdout" buffer is NOT
flushed at the time you call these RTLs. Eventually the buffers do
get flushed, but with VAX C the buffer is flushed using the same
RTLs.
o The symptoms for this are the following linker errors:
%LINK-W-NUDFSYMS, 2 undefined symbols:
%LINK-I-UDFSYM, CC$RMS_XABFHC
%LINK-I-UDFSYM, CC$RMS_XABPRO
o Positioning to the end of file using the fseek function with the
SEEK_SET option would no longer succeed if the user did not open the
file with write.
o Bizarre I/O behavior when the I/O operation involved positioning to
the last block in the file.
o A regression was introduced in OpenVMS V6.1 whereby the scanw and
wscanw routines always access violate.
o When reading zero length records from a Fortran carriage control
record file. The result is that the carriage control from the
previous read is used and may result in an access violation
dereferencing the data in the buffer.
RELATED ARTICLES:
Detailed articles describing the problems listed above may exist in
the OPENVMS database. To view these articles, open the appropriate
product database and perform a query using either of the following
search strings: 'VAXACRT12_062', 'VAXACRT' or 'VAXCRTL'.
ECO KIT ORDERING INSTRUCTIONS:
If after an evaluation you wish to obtain this kit, request it
electronically using the appropriate Advanced Electronic Services
(AES) Service Tool. If you are not familiar with how to request
kits electronically, open the DIA, WIS or DSNLINK database and
review the article entitled:
[AES] How To Electronically Request ECO Kits Using Service Tools
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 installation you may see the following message:
%INSTALL-E-NODELSHRADR, unable to delete image with shareable address data
-INSTALL-I-PLSREBOOT, please reboot to install a new version of this image
This is not a cause for concern. It simply means that DECC$SHR.EXE was
installed as a resident image, which is the standard configuration for
OpenVMS VAX V6.2 systems. The new image will not take effect until the
system is rebooted.
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:CRTL$ECO_DROP
NOTE:
CRTL$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 inconsistant state.
To remove the kit from an OpenVMS cluster node, the CRTL$ECO_DROP.COM
file must be run and a reboot MUST be performed on any system disk upon
which the kit was installed.
==========================================================================
| Table of Kit Image Information |
+----------------------------+----------+-----------------+--------------+
| | Overall | Image File | Image Link |
| Image Name | Checksum | Identification | Date/Time |
+----------------------------+----------+-----------------+--------------+
| DECC$SHR.EXE |%XDA751CE3| V06.0-64 | 3-AUG-1999 |
| | | 17:40:28.54 |
+----------------------------+----------+-----------------+--------------+
| LOCALEDEF.EXE |%XB60B5EB9| V1.0 | 3-AUG-1999 |
| | | 17:46:13.31 |
+----------------------------+----------+-----------------+--------------+
All trademarks are the property of their respective owners.
|