OpenVMS ALPACRT13_062 Alpha V6.2 - V6.2-1H3 DEC C RTL ECO Summary
TITLE: OpenVMS ALPACRT13_062 Alpha V6.2 - V6.2-1H3 DEC C RTL ECO Summary
Modification Date: 25-FEB-99
Modification Type: Updated Kit: Supersedes ALPACRT12_062
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, 1999. All rights reserved.
OP/SYS: DIGITAL OpenVMS Alpha
COMPONENT: DEC C RTL - DECC$SHR.EXE
LOCALEDEF.EXE
CRTLMSGDEF.OBJ (Updates STARLET.OLB)
CRTL.OBJ (Updates STARLET.OLB)
ACRT$ECO_DROP.COM (If desired, this command file
may be used to remove the ECO
and restore the original
files and libraries.)
SOURCE: Compaq Computer Corporation
ECO INFORMATION:
ECO Kit Name: ALPACRT13_062
ECO Kits Superseded by This ECO Kit: ALPACRT12_062
ALPACRT11_062
ALPACRT10_062
ALPACRT09_062
ALPACRT08_062
ALPACRT07_062
ALPACRT06_062
ALPACRT05_062
ALPACRT04_062
ALPACRT02_062
ECO Kit Approximate Size: 13068 Blocks
Kit Applies To: OpenVMS ALPHA V6.2, V6.2-1H1, V6.2-1H2, V6.2-1H3
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 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 Alpha V6.2 through
V6.2-1H3. This kit addresses the following problems:
Problems addressed in the ALPACRT13_062 kit:
o The DECC$SHR.EXE image in the ALPACRT12_062 remedial kit did
not include X/Open Issue 4 (XPG4) functions.
Problems addressed in the ALPACRT12_062 kit:
o A call to the POW function resulted in a %SYSTEM-F-HPARITH
exception when called in D_FLOAT floating point mode. The
result exceeded the maximum value representable in D_FLOAT
format.
Problems addressed in the ALPACRT11_062 kit:
o Sometimes, a call to the sigvec() C RTL function places the
process in hibernate state.
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 the 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 ALPACRT10_062 kit:
o The LOCALE COMPILE command fails.
Problems addressed in the ALPACRT09_062 kit:
o Customers who installed the previous ECO kit for OpenVMS V6.2
have reported problems accessing VFC 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.
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.
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.
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 the ALPACRT08_062 kit:
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 After migration to OpenVMS V6.2, processing VFC files may be
difficult. 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 ALPACRT07_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 ALPACRT06_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 6.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 ALPACRT05_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 ALPACRT04_062 kit:
o Due to an uninitialized buffer, certain combinations of calls
to the printf() function would result in spurious characters
being displayed.
o Calls to EXECVE with a parameter or environment list larger
than 127 bytes fails.
o Poor performance or a failure may occur when an attempt is
made to SORT a Stream_LF file with variable length records.
o DECC$TO_VMS does not recognize hyphens in OpenVMS file names
resulting in difficulties porting software to OpenVMS.
Problems addressed in the ALPACRT02_062 kit:
o OpenVMS Alpha V6.2 STARLET modified two symbols (SYS_ERRLIST
and SYS_NERR) to have DECC$ prefixes. These symbols were
inaccessable. The ability to access these symbols via
external references was not shipped with OpenVMS Alpha
V6.2 and is included in this kit.
NOTE: In the C database, there was an article entitled:
[DEC C] %LINK-I-UDFSYM, SYS_ERRLIST %LINK-I-UDFSYM,
SYS_NERR
which gave instructions on how to compile and insert these
global symbols into STARLET.OLB via small C and MACRO
programs. These small programs included these global
symbols in a module named DECC$SYS_ERRLIST.
The installation of ALPACRT02_062 will fail, ONLY FOR
THOSE CUSTOMERS who utilized this article.
With ALPACRT02_062, these global symbols are included in
the CRTL.OBJ object file that is replaced into STARLET.OLB.
When this occurs, you will get a DUPGLOBALS error. That is,
the global symbols SYS_ERRLIST and SYS_NERR are now defined
twice (hence DUPlicates).
To workaround this issue, please do the following before
installing the ALPACRT02_062 kit:
$ LIBRARY/DELETE=DECC$SYS_ERRLIST SYS$LIBRARY:STARLET.OLB
o On FT2 and FT3 of OpenVMS AXP T6.2, 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 Alpha V6.2. It worked under
OpenVMS Alpha V6.1.
o When fget is used to read a remote file over DECnet,
different results are obtained than when an identical file
is read locally.
o The function ungetc() stopped working in OpenVMS V6.2 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 A call to getenv("TERM") will fail when it is issued from
a VT500 class terminal.
o If a program containing the following fragment is run
on an OpenVMS Alpha V6.1 system, a file called test.file
will be created. A second run of the fragment would
append to the test.file. If the same fragment is run on
an OpenVMS Alpha V6.2 system, a new test.file is created
every time. It is not appended to the original test.file.
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 sleep did not occur) could be a
negative number if sleep continued for too long.
o Two locks may be obtained during I/O operations. In the
fclose() function, lock A is obtained before lock B. In
all other CRTL functions lock B is 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. OpenVMS Alpha V6.2 mainlined the XPG4
support. Part of this support was support for locales.
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 Undefined symbols, CC$RMS_xxx, exist in STARLET.OLB. 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 will no longer succeed if the user does not
open the file with write.
o Bizarre I/O behavior occurs when the I/O operation involves
positioning to the last block in the file.
o A regression was introduced in OpenVMS Alpha V6.2 that always
causes access violations in the scanw and wscanw routines.
o An access violation may occur when zero length records from
a FORTRAN carriage control record are read. The carriage
control from the previous read is used causing incorrect
data to be the buffer.
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.
During installation, the following message may appear:
%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 Alpha 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
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 inconsistant 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.
This patch can be found at any of these sites:
Colorado Site
Georgia Site
Files on this server are as follows:
alpacrt13_062.README
alpacrt13_062.CHKSUM
alpacrt13_062.CVRLET_TXT
alpacrt13_062.a-dcx_axpexe
|