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
OpenVMS VMS72_ACRTL-V0100 Alpha V7.2 DEC C RTL ECO Summary
TITLE: OpenVMS VMS72_ACRTL-V0100 Alpha V7.2 DEC C RTL ECO Summary
 
Modification Date:  27-SEP-1999
Modification Type:  New Kit

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 1999.  All rights reserved.

OP/SYS:     OpenVMS Alpha 

COMPONENT:  DECC$SHR.EXE 
              [SYSLIB]CRTL.OBJ (new file - used to 
                update STARLET.OBJ)
              [SYSLIB]CRTLMSGDEF.OBJ (new file - used 
                to update STARLET.OBJ)

SOURCE:     Compaq Computer Corporation

ECO INFORMATION:

     ECO Kit Name:  VMS72_ACRTL-V0100
                    DEC-AXPVMS-VMS72_ACRTL-V0100--4.PCSI
     ECO Kits Superseded by This ECO Kit:  None 
     ECO Kit Approximate Size:  15,200 Blocks
     Kit Applies To:  OpenVMS Alpha V7.2 
     System/Cluster Reboot Necessary:  Yes
     Rolling Re-boot Supported:  Yes
     Installation Rating:  INSTALL_3
                           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 DEC C RTL on OpenVMS Alpha V7.2.  This kit 
addresses the following problems: 

Problems Addressed in VMS72_ACRTL-V0100:

  o  The getenv() function has been corrected to check for a
     Command Line Interpreter (CLI) symbol only when called 
     in user access mode.  While DEC C RTL is a user-mode run 
     time library, a decision was made to correct getenv() in 
     order to make the library more robust.  The reason for this 
     change is because calling the CLI from within exec or kernel 
     mode may result in an access violation.

     With this fix, when called from inner access mode, the
     getenv() function will search only the C environment list 
     and OpenVMS logical names.

     This fix does not mean however that the user-mode only
     restriction was lifted.  It is still unsupported to call 
     the DEC C RTL functions, including getenv(), in any access 
     mode other than in user-mode.

  o  The strptime() function has been modified to comply with
     X/Open CAE Specification System Interfaces and Headers 
     Issue 5 (commonly known as XPG5).  In XPG5, how the 
     strptime() function processes the "%y" directive was changed 
     for a two-digit year within the century, if no century is 
     specified.

     According to XPG5, for the "%y" directive, when a century is
     not otherwise specified, values in the range 69-99 refer to
     years in the twentieth century (1969 to 1999 inclusive), while
     values in the range 00-68 refer to years in the twenty-first
     century (2000 to 2068 inclusive).  Essentially, for the "%y"
     directive, strptime() became a "pivoting" function with 69
     being a pivoting year.

     Before this change, the strptime() function was  always
     interpreting a two-digit year with no century as a year 
     within the twentieth century.

     With the current ECO kit, XPG5-compliant strptime() becomes 
     a default strptime() function in the DEC C RTL.  However, 
     for compatibility reasons, the previous "non-pivoting"
     XPG4-compliant strptime() function was retained.

     The "pivoting" is controlled by the DECC$XPG4_STRPTIME logical
     name.   Defining this logical name prior to invoking the
     application (any equivalence string) will cause the DEC C RTL
     to use the "non-pivoting" flavor of strptime().   Also,
     "non-pivoting" strptime() can be called directly as the
     decc$strptime_xpg4() function.

     While there is an easy way to disable "pivoting" by just
     defining a logical name, you should be aware that if the
     application ceases to work correctly due to the change in 
     the strptime() function, it almost certainly means that 
     there is a Y2K problem in the application.  Y2K-safe 
     applications should not be affected by the change in strptime().

  o  The stat() function has been corrected to process file
     specifications such as "foo:[000000]", where foo is defined 
     as a concealed device like the following:

          $ define/trans=(conc) foo device:[bar.]

     Prior to this fix, the stat() function would fail for such a
     file specification with errno set to ENOENT (No such file or
     directory).

  o  Both flavors of the system() function were corrected to ensure
     that the function always returns the correct status.

     The POSIX-compliant system() function has been corrected to
     always return a status corresponding to the signal, which
     terminated the child process if the child process was
     terminated due to receiving a signal.

     Prior to this fix, there was a small timing window when the
     function could return the status corresponding to the child
     process completion code, even in the case when the child
     process was terminated by a signal.

     The Non-POSIX system() function has been corrected to always
     return the OpenVMS completion code of the child process.

     Prior to this fix, there was a small timing window when the
     function could return the status from LIB$SPAWN(), instead of
     the completion code of the child process.

  o  The opendir() and readdir() functions have been corrected to
     process directories on a remote node specified using the
     following DECnet file specification:

          nodename"username password"::device:[directory] 

     Prior to this fix, opendir() could fail with errno set to
     ENOTDIR (Not a directory).  In the case when opendir() could
     successfully open the directory, the readdir() function could
     return incorrect file names.

  o  The times() and clock() functions have been modified to be
     both thread-safe and AST-reentrant.

     Prior to this change, these functions belonged to the class of
     functions which are thread safe, but not AST-reentrant (see
     section 1.7.2 Multithread Restrictions in the DEC C RTL
     Reference Manual).

     The change in the reentrancy status of the times() and clock()
     functions will be reflected in the next release of the Manual.

  o  The stat() function no longer fails due to the failure of the
     mktime() function.

     It was reported that the stat() function fails for a file
     created on April 4th 1999 at 2:04 a.m.  EST, which is the
     "missing hour" in the transition from standard to daylight
     saving time in the Eastern time zone.

     The problem was due to the failure of the mktime() function to
     process the "missing hour" (stat() calls mktime() to fill
     st_?time members of the stat structure with the UTC time).

     While the mktime() function was not fixed, the stat() function
     was corrected to handle the failure of mktime() and set
     st_?time fields correctly, even if mktime() fails.

     Note, that, strictly speaking, "missing hour" is an invalid
     input for mktime(): there is no such time as "April 4th 1999
     2:04 a.m.", for example, in the Eastern time zone.  Given the
     possibility of calling mktime() with an invalid time, the
     stat() function probably should not have used mktime() in the
     first place or at least should have been prepared for a
     mktime() failure.

  o  The CRTL I/O subsystem was enhanced to lift the eight nested
     directory levels restriction for an ODS-5 device.  This change
     affects such DEC C RTL functions as access, mkdir, opendir,
     rmdir, and stat.

     The following program example shows different OpenVMS and
     Unix-style deep directory specifications.

          #include 
          #include 
          #include 
          #include 
          #include 
          #include 

          #define DIM(_s) (sizeof(_s) / sizeof(_s[0]))

          /*
          ** we assume presence of root$ concealed device:
          **
          ** define/NoLog/Tran=(Conceal,Terminal) root$ node$dka0:[000000.]
          **
          */

          static char *filename[] = {
          "node$dka0:[w.x.y.z.a.b.c.d.e.f.g.h.i.j]",    /* (1) */
          "node$dka0:[w.x.y.z.a.b.c.d.e.f.g.h.i]j.dir", /* (2) */
          "root$/w/x/y/z/a/b/c/d/e/f/g/h/i/j",          /* (3) */
          };
          main()
          {
            struct stat s;
            int i;
            char *name;

            for(i=0; i < DIM(filename); ++i) {
              name = filename[i];

              if ( mkdir(name,0) == -1 )
                printf("%d? mkdir(): %s\n", i+1, strerror(errno));

              if ( stat(name,&s) )
                printf("%d? stat(): %s\n", i+1, strerror(errno));
              else if ( !S_ISDIR(s.st_mode) )
                printf("%d? stat(): %s\n", i+1, "not a directory???");

              if ( !opendir(name) )
                printf("%d? opendir(): %s\n", i+1, strerror(errno));

              if ( access(name,F_OK) == -1 )
                printf("%d? access(): %s\n", i+1, strerror(errno));

              if ( rmdir(name) == -1 )
                printf("%d? rmdir(): %s\n", i+1, strerror(errno));
            }
          }

          Please note that the DEC C RTL still does not support mixed
          Unix/OpenVMS-style filenames coded using extended ODS-5
          syntax, such as "doc/foo.bar.bar", "~foo^.bar" and
          "./tmp/foo.bar.b^_ar".

  o  The select() function has been corrected to return a failure
     status if either an invalid file descriptor or file descriptor
     not associated with a socket is found in one of the specified
     file descriptor sets.  In the case of an invalid file
     descriptor, the select() function sets errno to EBADF.  In
     case of a file descriptor not associated with a socket, the
     function sets errno to ENOTSOCK.

     Failure with errno set to EBADF is the standard requirement
     for the select() function.  Failure with errno set to ENOTSOCK
     occurs because the select() function can currently operate
     only on sockets.

     Prior to this fix, the function was setting errno as described
     above, but otherwise was ignoring invalid file descriptors and
     file descriptors not associated with sockets.

     The old behavior can be requested by defining the logical name
     DECC$SELECT_IGNORES_INVALID_FD prior to invoking the
     application (any equivalence string).

  o  The bug in the printf() "engine" introduced in the
     ALPACRT07_071 kit has been fixed.  The bug was that when 
     the minimal field width or precision specified in the 
     format directive was greater than 1024, the "engine" 
     could write beyond the end of allocated internal conversion 
     buffer.  It could happen only in X_FLOAT floating point mode
     (/L_DOUBLE_SIZE=128, which is the default on Alpha).  The bug
     affected all functions from the printf() family of functions.

   o  Performance problem with the %d, %o, %x, %u and %c printf()
      format specifiers was fixed.   Performance degradation was
      introduced in ALPACRT05_071 and VAXACRT05_071 ECO kits where
      the printf() engine was modified to use the new macros for
      managing thread-specific memory.

      To fix this performance problem, the printf() main engine was
      modified to use large thread-specific conversion buffers only
      when needed for the particular conversion and use small
      conversion buffers allocated from stack otherwise.

      The reason for the access violation is that the code in the
      printf() engine which makes a decision as to which conversion
      buffer to use, looks only at the format directive; for
      floating-point conversion the big buffer is used, otherwise,
      the small buffer is used.

      The algorithm does not take into account:

           .  minimum field width associated with the format 
              directive

           .  precision which is the minimum number of digits to 
              appear for integer conversions:  d, i, o, u, x and X

           .  ls or S directive with no precision when the input
              wide-character string can generate a multibyte 
              characters string exceeding size of the small buffer

      In any of the cases above, due to the lack of a proper check
      for the size of the conversion buffer, printf() can write
      beyond the end of the small buffer, thus corrupting memory
      (stack).

      The problem is Alpha-specific and X_FLOAT floating-point
      specific (/L_DOUBLE_SIZE=128 long doubles which is the default
      on Alpha).

      The fix was to add missing checks for switching to the big
      conversion buffer for the conditions above.

  o   The problem commonly known as the "Y2038 bug" has been fixed.
      The C run-time library time functions, which access the
      current time using the OpenVMS time functions, have been
      corrected to handle times after 19-Jan-2038 3:14:07.  Data
      type time_t is defined on OpenVMS as an unsigned 32-bit
      integer.   However, some of the functions which retrieve
      current time from the system and convert it to time_t format
      were using signed arithmetic.

      This fix affects the functions:

          o  decc$fix_time()
          o  time()
          o  ftime()
          o  gettimeofday()
          o  getclock()

     With this fix, DEC C RTL time functions will handle times
     successfully until 07-Feb-2106 06:28:15.

  o  The printf() family of functions have been enhanced to perform
     better when the calling application has exhausted available
     memory.

  o  The file access functions have been corrected to process 
     file names on UNIX systems over DECnet.  The file name for 
     a file on a UNIX system accessed over DECnet was being 
     converted to uppercase, even when the name was enclosed in 
     double quotes.  This problem was introduced on OpenVMS V7.2 
     and also affects OpenVMS V7.1-2 and OpenVMS V7.2-1.  File 
     names of the form node::"dir/name" are now processed correctly.


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 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.
All trademarks are the property of their respective owners.


Files on this server are as follows:
»dec-axpvms-vms72_acrtl-v0100--4.README
»dec-axpvms-vms72_acrtl-v0100--4.CHKSUM
»dec-axpvms-vms72_acrtl-v0100--4.pcsi-dcx_axpexe
»vms72_acrtl-v0100.CVRLET_TXT
privacy statement using this site means you accept its terms