Kit Name: ALPLIBR08_071 Kits superseded by this kit: ALPLIBR07_071 Kit Dependencies: The following remedial kit(s) must be installed BEFORE installation of this, or any required kit: None. In order to receive all the corrections listed in this kit, the following remedial kits should also be installed: None. Kit Description: Version(s) of OpenVMS to which this kit may be applied: OpenVMS Alpha V7.1, V7.1-1H1, V7.1-1H2 Files patched or replaced: o [SYSLIB]LIBRTL.EXE (new image) o [SYSLIB]LIBRTL_INSTRUMENTED.EXE (new image) Problems addressed in ALPLIBR08_071 kit o For OpenVMS V7.0, the run-time library (LIBRTL) routine OTS$CVT_TU_L (convert text unsigned to long) was made 64-bit address aware and quadword conversions were added. This resulted in a `signed' overflow check being performed in the `unsigned' case. Consequently, some conversions were reported as overflow errors when they were in fact good. o For OpenVMS V7.0, the run-time library (LIBRTL) routine STR$ADD (string add) was made 64-bit address aware to support 64-bit string descriptors. This resulted in one of the `input' parameters being overwritten with an intermediate value. The documentation lists this parameter as read-only. Page 2 o For the FORTRAN Run-time Library (RTL), ensure that a large enough buffer is allocated, if the size the user requested buffer is bigger than the current intermediate buffer. o The run-time library (RTL) routine LIB$GETDVI failed for CLASS_VS (varying string) descriptors. Varying strings were most often found in PASCAL language programs. Problems addressed in ALPLIBR07_071 kit o The string copy routine STR$COPY_R_R8 accepts a source length argument in a register. This should be interpreted as an unsigned word, the upper portion of the register being masked off. o LIB$VM_MALLOC (used by C RTL routine "malloc") obtains memory using $EXPREG. In the case where $EXPREG fails to return enough memory to satisfy a given request, such "leftover" memory is placed on a LIB$VM_MALLOC free list. This tends to occur when a process has reached all its virtual address space limit, or for some reason asks for an exceptionally large memory allocation. The problem is that this "leftover" memory is probably the last memory available to the process, and interferes with any "last ditch" attempts to recover. Another scenario is where a task can be performed in 2 ways, one of which involves using a large amount of memory. This can result in LIB$VM_MALLOC grabbing a large amount of virtual memory and putting it on its free list. Problems addressed in ALPLIBR06_071 kit o The wrong length was returned in the resultant-length field from LIB$GET_FOREIGN in the case that the input string was truncated. LIB$GET_FOREIGN was returning the original length of the string instead of the truncated length. o LIB$CONVERT_DATE_STRING handles 2-digit years from input by selecting the current century as the default to use for the century portion of the date. This behavior may not be desirable for many customers since 00 would be interpreted as 1900 (and then as 2000 on 1/1/2000). Unfortunately, it has been documented since V6.0 and therefore we could not see changing the Y format without disrupting customers who expect this behavior. Page 3 Problems addressed in ALPLIBR05_071 kit o See the problem description in the ALPLIBR03_071 documentation. The problem was not totally resolved by the ALPLIBR03_071 remedial kit. Problems addressed in ALPLIBR04_071 kit o A "not valid type" error occurred as a result of a change in LIBRTL. Problems addressed in ALPLIBR03_071 kit o The LIB$CVT_DX_DX routine will return an access violation status when called from BASIC with a zero length source string. This may potentially happen with other languages as well. This only occurs for NODS to NODS conversions. There is an additional problem in NODS to NODS conversions, where the length returned does not account for extra spaces on the end of the string (excluding space padding). Problems addressed in ALPLIBR02_071 kit o Memory leak in repeated calls to lib$init_date_time_context and lib$free_date_time_context causes memory to be exhausted. Problems addressed in ALPLIBR01_071 kit o When using the ACCOUNTING utility to format and display accounting records, certain record types display erroneous values for elapsed time and processor time. o X-FLOAT numbers are not rounding correctly when doing formatted I/O from Pascal. o A hang will occur when LIB$FIND_IMAGE_SYMBOL is called recursively. This manifested itself in a C++ program where the recursive call to LIB$FIND_IMAGE_SYMBOL occurred because of its use in a constructor. Page 4 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: 3 : To be installed by customers experiencing the problems corrected. 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 ALPLIBR08_071 [location of the saveset] The saveset location may be a tape drive, or a disk directory that contains the kit saveset. The images in this kit will not take effect until the system is rebooted. If you have other nodes in your VMS 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 LIBRTL.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. Copyright (c) Compaq Computer Corporation, 1998 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 Page 5 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, 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.