ECO NUMBER: ALPACRT13_062 PRODUCT: OpenVMS Alpha OPERATING SYSTEM 6.2 UPDATE PRODUCT: OpenVMS Alpha OPERATING SYSTEM 6.2 COVER LETTER 1 KIT NAME: ALPACRT13_062 2 KITS SUPERSEDED BY THIS KIT: ALPACRT12_062 3 KIT DEPENDENCIES: 3.1 The following remedial kit(s) must be installed BEFORE installation of this, or any required kit: None. 3.2 In order to receive all the corrections listed in this kit, the following remedial kits should also be installed: None. 4 KIT DESCRIPTION: 4.1 Version(s) of OpenVMS to which this kit may be applied: OpenVMS Alpha V6.2, V6.1-1H1, V6.2-1H2, V6.2-1H3 4.2 Files patched or replaced: o [SYSLIB]DECC$SHR.EXE (new image) o [SYSEXE]LOCALEDEF.EXE (new image) o [SYSLIB]CRTL.OBJ (new file - used to update STARLET.OBJ) o [SYSLIB]CRTLMSGDEF.OBJ (new file - used to update STARLET.OBJ) o [SYSUPD]ACRT$ECO_DROP.COM (new file) 5 PROBLEMS ADDRESSED IN ALPACRT13_062 KIT o The DECC$SHR.EXE image in the ALPACRT12_062 remedial kit did not include X/Open Issue 4 (XPG4) functions. -- COVER LETTER -- Page 2 17 February 1999 6 PROBLEMS ADDRESSED IN 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. 7 PROBLEMS ADDRESSED IN ALPACRT11_062 KIT o Sometimes, a call to 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 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. 8 PROBLEMS ADDRESSED IN ALPACRT10_062 KIT o The LOCALE COMPILE command fails. 9 PROBLEMS ADDRESSED IN 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. -- COVER LETTER -- Page 3 17 February 1999 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. 10 PROBLEMS ADDRESSED IN ALPACRT08_062 KIT o An ISV 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 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 -- COVER LETTER -- Page 4 17 February 1999 terminal. 11 PROBLEMS ADDRESSED IN 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. 12 PROBLEMS ADDRESSED IN 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 -- COVER LETTER -- Page 5 17 February 1999 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. 13 PROBLEMS ADDRESSED IN 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. 14 PROBLEMS ADDRESSED IN ALPACRT04_062 KIT 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. 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 does not recognize hyphens in VMS file names resulting in an aggravated difficulty to port software to VMS. 15 PROBLEMS ADDRESSED IN ALPACRT02_062 KIT o OpenVMS Alpha 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 Alpha V6.2 and is included here. o The DEC C RTL routine chdir fails when passed a logical search list. -- COVER LETTER -- Page 6 17 February 1999 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 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.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 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 Alpha 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 Alpha 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. -- COVER LETTER -- Page 7 17 February 1999 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 Alpha V6.2 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. 16 KIT INSTALLATION RATING: The following kit installation rating, based upon current CLD information, is provided to serve as a guide to which customers should apply this remedial kit. (Reference attached Disclaimer of Warranty and Limitation of Liability Statement) INSTALLATION RATING: INSTALL_3 : To be installed by customers experiencing the problems corrected. 17 INSTALLATION INSTRUCTIONS: Install this kit with the VMSINSTAL utility by logging into the SYSTEM account, and typing the following at the DCL prompt: @SYS$UPDATE:VMSINSTAL ALPACRT13_062 [location of the saveset] The saveset location may be a tape drive, CD, or a disk directory that contains the kit saveset. Since the images in this kit will not take effect until the system is rebooted, you must reboot the system after installing this kit. -- COVER LETTER -- Page 8 17 February 1999 If you have other nodes in your OpenVMS cluster, 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 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 Alpha systems. The new image will not take effect until the system is rebooted. 18 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 must be set 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 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. Copyright (c) Compaq Computer Corporation, 1999 All Rights Reserved. Unpublished rights reserved under the copyright laws of the United States. The software contained on this media is proprietary to and embodies the confidential technology of Compaq Computer Corporation. Possession, use, or dissemination of the software and media is authorized only pursuant to a valid written license from Compaq Computer Corporation. DISCLAIMER OF WARRANTY AND LIMITATION OF LIABILITY THIS PATCH IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR PARTICULAR PURPOSE, OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED TO THE EXTENT PERMITTED BY APPLICABLE LAW. IN NO EVENT WILL COMPAQ BE LIABLE FOR ANY LOST REVENUE OR PROFIT, OR FOR SPECIAL, INDIRECT, -- COVER LETTER -- Page 9 17 February 1999 CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, WITH RESPECT TO ANY PATCH MADE AVAILABLE HERE OR TO THE USE OF SUCH PATCH.