Jump to page titleUNITED STATES
hp.com home products and services support and drivers solutions how to buy
» contact hp


more options
 
hp.com home
End of Jump to page title
HP Services Software Patches
Jump to content


» software & drivers
» ask Compaq
» reference library
» forums & communities
» support tools
» warranty information
» contact support
» parts
» give us feedback

patches by topic
» DOS
» OpenVMS
» Security
» Tru64 Unix
» Ultrix 32
» Windows
» Windows NT

associated links
» what's new
» contract access
» browse patch tree
» search patch tree
» join mailing list

connection tools
» nameserver lookup
» traceroute
» ping


Find Support Information and Customer Communities for Presario.
Content starts here
HP Services Software Patches - vaxacrt09_061
 
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) Digital Equipment Corporation 1996, 1997.  All rights reserved.

PRODUCT:    OpenVMS VAX

COMPONENT:  DEC C RTL - DECC$SHR.EXE
                        DECCCURSE.OLB
                        DECCRTL.OLB
                        DECCRTLG.OLB
                        VAXC2DECC.EXE
                        VAXCG2DECC.EXE

SOURCE:     Digital Equipment Corporation

ECO INFORMATION:

     ECO Kit Name:  VAXACRT09_061
     ECO Kits Superseded by This ECO Kit:  VAXACRT08_061
                                           VAXACRT07_061
                                           VAXACRT06_061
                                           VAXACRT05_061
                                           VAXACRT03_061 
                                           VAXACRT02_061
                                           VAXACRT01_061
     ECO Kit Approximate Size:  3040 Blocks
     Kit Applies To:  OpenVMS VAX V5.5-2, V5.5-2H4, V5.5-2HF, V6.0, V6.1
     System/Cluster Reboot Necessary:  Yes

     Installation Rating:  3 - To be installed on all systems running
                               the listed versions of OpenVMS which
                               are experiencing the problems described.

     NOTE:  In order to receive the full fixes listed in this kit,
            the following remedial kits also need to be installed:

                 None


ECO KIT SUMMARY:

An ECO kit exists for the DEC C RTL on OpenVMS VAX V5.5-2 through V6.1.
This kit addresses the following problems: 

Problems Addressed in the VAXACRT09_061 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. 


Problems Addressed in the VAXACRT08_061 Kit:

  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 VAXACRT07_061 Kit:

  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. 


Problems Addressed in the VAXACRT06_061 Kit:

  o  The lseek function may position incorrectly when given the SEEK_END
     option.  Typically this occurs when the internal buffer is full and
     the last operation done to the file is flush or sync. 

  o  Since changing the default LRL value for stream files from 0 to
     32767, we've been informed that this change has a dramatic affect on
     sort times and workfile size.  We now look for a logical
     DECC$DEFAULT_LRL for this value, using 32767 if not defined. 


Problems Addressed in the VAXACRT05_061 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  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:

          C  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  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  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. 

  o  The read function fails to load characters that have been used in
     calls to the ungetc function. 


Problems Addressed in the VAXACRT02_061 Kit:

  o  The functions fprintf & printf truncate the output when more than
     one element is specified in the I/O list and the number of
     characters written for a particular element exceeds 2048 characters.
     For example: 

          char buffer[2048];  printf("++++%s", buffer);

     In this particular case the output will be "++++" plus the first
     2044 characters from "buffer".  Remove the "++++" and all 2048
     characters from "buffer" are output.  If the "buffer" is larger than
     2048 characters, then the same is true except that characters 1-2044
     will be output, characters 2045-2048 will be truncated and then
     characters 2049 -> end-of-buffer will be output. 

  o  When the following code section is used in a signal handler, two
     control-c characters abort the program. 

          void signal_handler (int sig) { signal  (SIGINT,  SIG_IGN);  /*
          Ignore control-c characters */ << do actual work >>

          }


Problems Addressed in the VAXACRT01_061 Kit:

  o  The functions which write data to a file corrupt the data in the
     file if an "exceeded disk quota" error occurs during the write
     operation. 

  o  The behavior of passing negated scansets to the scanf function was
     changed such that a "-" between two characters where the first is
     less than the second is treated as a range character set. 

  o  The function getenv was enhanced to perform a case insensitive
     lookup if the case sensitive lookup fails.

  o  The functions which read data from files would fail to read lines
     from an RMS "variable with fixed control" file with print format
     carriage control attributes.  This typically occurred if the lines
     were double spaced. 

  o  Calls to the fwrite function without a trailing n resulted in
     implied newlines being written if the following conditions applied:
     the file was an RMS sequential variable with fixed control file with
     print format carriage control attributes. 

  o  The functions close and fclose did not properly set the value of
     vaxc$errno when the close operation failed. 

  o  The function ftell has been corrected to take into account that an
     unget character may exist.  If such a character exists, the file
     position is returned as the position of this character in the file;
     as if the character has not yet been read. 

  o  When working with remotely accessed files via DECnet, the function
     fseek would fail to position correctly in files containing fixed
     length records.  Also, the function ftell would report an incorrect
     position. 

  o  A process would terminate after the second CTRL-C (CONTROL C)
     regardless of the application re-establishing SIGINT processing. 
     The SIGINT handling now works as documented. 

  o  The file writing functions would lose characters when writing to a
     file whose attributes include carriage return carriage control and
     whose record size is the size of the I/O buffer being used by the
     RTL.  Typically this buffer size is a power of 2 greater than 8192. 

  o  In V6.1 and earlier releases, if the buffer argument to setvbuf was
     NULL, then setvbuf would reset the buffer to the one allocated by
     the DEC C RTL when the file was opened.  New behavior is that if a
     NULL buffer argument is passed, and the size argument is larger than
     the buffer allocated by the RTL when the file was opened, then
     setvbuf will allocate a buffer equal to the specified size, and use
     that as the file buffer. 

  o  The functions stat and fstat would fail to return any information
     about a remote file that was already opened for exclusive access. 

  o  The fclose function has been corrected to properly deallocate
     channels used when the user has opened the NULL device. 

  o  The printf function was enhanced to print "(null)" when passed a
     null pointer.  Prior to this, the DEC C RTL would issue an access
     violation error. 

  o  The RTL now properly parses RMS options of the form "DNA=".  This
     change was made for the benefit of applications migrating from VAX C
     to DEC C. 

  o  The function puts now correctly can write a string whose length
     exceeds 32,767 bytes.  Prior to this correction, the function would
     report that it succeeded, while it actually had failed. 

     The function puts has been corrected such that when strings are
     written whose length exceeds 8131 bytes, typing the file no longer
     results in the error message:

          "SYSTEM-F-EXQUOTA, process quota exceeded"

  o  The function read no longer adds an extra NULL character to the end
     of a record when the record attribute is Fortran Carriage Control
     and the carriage control character is NULL.  The new behavior is now
     compatible with VAX C, which simply removes the carriage control
     character. 

  o  A problem was fixed when reading fixed length record files using a
     combination of 'lseek' and 'read' which behaved correctly using the
     VAX C product. 

  o  The function fseek no longer fails when passed a direction of
     SEEK_END and a non-zero offset argument.  This correction applies to
     files with fixed length records. 

  o  The function read has been corrected to allow reading the 'n'
     character from a DECnet task to task network device. 

  o  The function system may now be used from a signal handler which has
     been triggered by the SIGALRM function.  Prior to this correction,
     this combination of calls resulted in the process issuing the system
     call hanging. 

  o  The function getname no longer access violates if called prior to a
     CLI being established for the process. 

  o  The function pipe no longer fails if the flags O_RDWR, O_RDONLY or
     O_WRONLY are specified.  These flags are now ignored by the
     function. 

  o  For child processes in which the parent has used the dup function to
     redefine file descriptor zero to be a pipe, SYS$ERROR is no longer
     defined to be the NLA0 device. 

  o  A correction has been made to the RTL such that the I/O system
     properly inherits a record attribute of none when a previous version
     of the file had an undefined record format.  Prior to this
     correction, the newly created file would be created with carriage
     return record attributes. 

     The functions fopen, open, and creat have been corrected to allow
     the RMS option "rat=none" to override the record attributes of the
     previous version of the file. 

     The function ftell now correctly reports the file position for files
     which have an undefined record format.  This includes when the file
     is positioned at the end of the file. 

  o  Depending upon previous usages of virtual memory, the first call to
     the alarm function in an application sometimes would return a
     non-zero value.  Also, the first call to the strtok function, when
     passed NULL as the first argument, would sometimes return a non-zero
     value. 

  o  The RTL no longer ignores the Maximum Record Size (mrs) value when
     provided by the caller.  Prior to this correction, stream files
     would always be created with a maximum record size of 32767.  For
     example, with the statement: 

          fp = fopen("test.dat","w","mrs=512");

     the mrs value is now correctly set to 512 instead of the incorrect
     behavior of setting it to 32767. 

  o  The function chdir has been corrected to behave as documented.  A
     problem was fixed where changing the directory was permanent even if
     the parameter was passed specifying this change to be temporary. 

  o  If a program calls fclose(fp) to close the disk file associated with
     the "FILE *" fp, and the disk is full, the fclose call fails.  At
     this point the file cannot be deleted from the disk because the
     program still has it open; but the program cannot close it.  As a
     result the file cannot be deleted for as long as the program is
     running. 

  o  The lseek function no longer fails to write to the correct block if
     the file does not exist and the write is 1024 bytes. 

  o  The function strtok no longer stops on 0Xff characters found in the
     users buffer unless that character is explicitly passed as a token
     separator. 

  o  The function access no longer fails when the filename passed
     contains a search list logical name whose translation spans multiple
     physical devices. 

  o  The DEC C RTL no longer fails to close stdin, stdout, and stderr if
     called from a language other than C.  Prior to this correction, the
     results were either an incomplete or nonexistent file.  This problem
     had been corrected in OpenVMS AXP V6.1 and is now corrected on both
     platforms. 

  o  The printf function, using the %g format specifier, no longer
     displays a colon instead of a number.  For example, the function
     using a format specifier "%#13.6g" with a value of "314109.968750"
     would result in the incorrect display of "31410:".  It now correctly
     displays the value "314110". 

  o  The function decc$set_reentrancy now allows the first call to lower
     the reentrancy level. 

  o  While the documentation had indicated that signals were reset to
     SIG_DFL after they are caught, this was not true for SIGINT.  Prior
     to this correction, raising the signal a second time would result in
     the process exiting with a status message instead of exiting
     quietly. 

  o  A successful call to a socket function would inadvertently reset the
     value of errno to zero, which is not permitted by the ANSI standard.

  o  The curses function clrtobot no longer incorrectly clears the entire
     screen.  It now correctly clears only from the cursor position to
     the end of the screen. 

  o  The value of the environment name "TERM", obtained by calling the
     getenv function, has been corrected to return values of the form
     "vt300-80", as opposed to the incorrect value of the form "USER=ME".

  o  The functions stat and fstat would not work with disks which have
     allocation classes. 

  o  The RTL no longer sets errno as a side effect of successfully
     creating a file. 

  o  The functions fwrite, fputs, and puts now properly clear the unget
     character buffer. 

  o  The DEC C RTL has been corrected to properly deal with EOF when
     reading and writing to pipes.  The correct behavior is found in the
     POSIX IEEE Standard 1003.1-1988, Section 6.4.1.2, which states that
     an EOF is written to a pipe only when no writers are left.  Before
     implementing the POSIX behavior, the DEC C RTL was writing an EOF to
     a pipe every time a writer closed a pipe. 

     The DEC C RTL no longer incorrectly writes an EOF to a pipe when the
     user issues a write of zero bytes.  The corrected behavior now conforms
     to the POSIX IEEE Standard 1003.1-1988, Section 6.4.1.2, which
     states that writing zero bytes to a file has no effect. 

  o  The close function has been corrected to free the file descriptor
     associated with a socket, even if an error occurs during the
     operation. 

  o  The signal function has been corrected to continue ignoring the
     SIGINT signal value, even after one has been received. 


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. 
Files on this server are as follows:
»vaxacrt09_061.README
»vaxacrt09_061.CHKSUM
»vaxacrt09_061.CVRLET_TXT
»vaxacrt09_061.a-dcx_vaxexe
privacy statement using this site means you accept its terms