OpenVMS VAXCRTL11_062 VAX V6.2 DEC C RTL ECO Summary
TITLE: OpenVMS VAXCRTL11_062 VAX V6.2 DEC C RTL ECO Summary
Modification Date: 10-NOV-2000
Modification Type: Made kit available again on the ftp site.
NOTE: An OpenVMS saveset or PCSI installation file is stored
on the Internet in a self-expanding compressed file.
For OpenVMS savesets, the name of the compressed saveset
file will be kit_name.a-dcx_vaxexe for OpenVMS VAX or
kit_name.a-dcx_axpexe for OpenVMS Alpha. Once the OpenVMS
saveset is copied to your system, expand the compressed
saveset by typing RUN kitname.dcx_vaxexe or kitname.dcx_alpexe.
For PCSI files, once the PCSI file is copied to your system,
rename the PCSI file to kitname-dcx_axpexe.pcsi, then it can
be expanded by typing RUN kitname-dcx_axpexe.pcsi. The resultant
file will be the PCSI installation file which can be used to install
the ECO.
Copyright (c) Compaq Computer Corporation 1996, 2000. All rights reserved.
PRODUCT: OpenVMS VAX
COMPONENT: DEC C RTL - DECC$SHR.EXE
LOCALEDEF.EXE
CTRL.OBJ (Updates STARLET.OLB)
CRTLMSGDEF.OBJ (Updates STARLET.OLB)
SOURCE: Compaq Computer Corporation
ECO INFORMATION:
ECO Kit Name: VAXCRTL11_062
ECO Kits Superseded by This ECO Kit: VAXACRT10_062
VAXACRT09_062
VAXACRT08_062
VAXACRT07_062
VAXACRT06_062
VAXACRT05_062
VAXACRT04_062
VAXACRT03_062
VAXACRT02_062
ECO Kit Approximate Size: 3528 Blocks
Saveset A: 3492 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 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
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 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.
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 DCL prompt:
@SYS$UPDATE:ACRT$ECO_DROP
This patch can be found at any of these sites:
Colorado Site
Georgia Site
Files on this server are as follows:
vaxcrtl11_062.README
vaxcrtl11_062.CHKSUM
vaxcrtl11_062.CVRLET_TXT
vaxcrtl11_062.a-dcx_vaxexe
vaxcrtl11_062.CVRLET_TXT
|