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 ALPACRT09_071 Alpha V7.1-7.1-1H2 DEC C Run-Time Library ECO Summary
TITLE: OpenVMS ALPACRT09_071 Alpha V7.1-7.1-1H2 DEC C Run-Time Library ECO Summary
 
Modification Date:  19-OCT-1999
Modification Type:  Documentation Update.  Please see note in
                    Kit Dependencies section.

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 1998, 1999.  All rights reserved.
 
OP/SYS:     OpenVMS Alpha   

COMPONENT:  DEC C Run-Time Library                                            
            DECC$SHR.EXE                                                      
              CRTL.OBJ (Updates STARLET.OLB)                                  
              CRTLMSGDEF.OBJ (Updates STARLET.OLB)                            
              ACRT$ECO_DROP.COM (Allows kit to be removed)

SOURCE:     Compaq Computer Corporation

ECO INFORMATION:

     ECO Kit Name:  ALPACRT09_071
     ECO Kits Superseded by This ECO Kit:  ALPACRT08_071
                                           ALPACRT07_071
                                           ALPACRT06_071
                                           ALPACRT05_071
                                           ALPACRT04_071
                                           ALPACRT03_071
                                           ALPACRT02_071
                                           ALPACRT01_071
     ECO Kit Approximate Size:  17136 Blocks
     Kit Applies To:  OpenVMS Alpha V7.1, V7.1-1H1, 7.1-1H2
     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:

         ALPBASE02_071

         NOTE:  If the ALPBASE02_071 ECO kit is installed after the
                installation of this kit, ALPACRT09_071, the DEC C
                Run Time Library will be regressed.  If this occurs,
                this ALPACRT09_071 kit will have to be installed
                again.

                To ensure that the most recent OpenVMS DEC C RTL ECO
                kit is installed on the system, use $ANALYZE/IMAGE to
                check the image id for DECC$SHR.EXE.  For DECC$SHR.EXE
                in ALPACRT09_071, the image id is X07.1-4.

       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 Run-Time Library on OpenVMS Alpha V7.1
through V7.1-1H2.       

Problems addressed in ALPACRT09_071:

  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 an mktime() 
     failure.

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


Problems addressed in ALPACRT08_071:

  o  The previous kit, ALPACRT07_071, documented a requirement that
     the ALPY2K01_071 remedial kit must be installed first (before
     ALPACRT07_071).  However, the Y2K kit is not needed, so it is
     NOT included as a requirement for this new ALPACRT08_071 kit.


Problems addressed in ALPACRT07_071:

  o  For DEC C Run-Time Library (RTL) functions, a call with a  too
     long filename argument could result in an access violation.

  o  After installing the ALPY2K01_071 kit, for an  existing  file,
     the open() function failed with errno EEXIST, when called with
     the O_EXEC flag, but without the O_CREAT flag.

     Prior to the ALPACRT02_071 ECO kit, the behavior was as if the
     open  function  was replacing the O_EXCL flag with the O_CREAT
     flag, if the former was specified alone so that  the  function
     was  successfully  opening an existing file when called with a
     single O_EXCL flag.  The current kit restores this behavior.

  o  One could possibly specify  none,  one  or  both  options  for
     MAP_SHARED/MAP_PRIVATE  and  MAP_FIXED/MAP_VARIABLE.  However,
     the documentation (in both cases) states that you must specify
     only  one  of  each  of  these  options  and  also just one of
     MAP_FILE/MAP_ANONYMOUS (defaults to MAP_FILE if not  specified
     at  all  as  it  is  represented  by a single bit in the flags
     parameter).

  o  Furthermore, a call  to  the  munmap()  function  to  unmap  a
     PRIVATE   section  modifies  errno,  even  though  success  is
     returned by the function.

  o  The functions from the exec  family  of  functions  no  longer
     forced   activation   on-disk   images.   The  regression  was
     introduced in the ALPACRT03_071 kit and occurred regardless of
     how  the  image  file  was  specified  in the call to the exec
     function.   The  problem  prevented  activation  of  installed
     images,  because  the  explicit  file version in the file spec
     prevented image activator from known-file lookups.

  o  As the result of this problem, the child  process  was  always
     running  an  on-disk  version of the image.  If the image that
     was supposed to be executed by the child process was installed
     with  privileges,  the  child  process  would not get expected
     privileges and would  fail  while  attempting  to  perform  an
     operation  which required privileges provided by the installed
     image.

  o  The Chown function changed the owner of  a  file  to  [-1,-1],
     when passed with owner and group arguments of -1.

  o  The DCL Pn (P1, P2, etc.) parameters passed  to  a  DCL  child
     were uppercased.

  o  A performance problem with the %d, %o, %x, %u  and  %c  printf
     format  specifiers  occurred.   Consequently, after installing
     several ECO kits, a regular job was  taking  about  twice  the
     normal time to complete.

  o  After installing the  ALPACRT06_071  ECO  kit,  a  performance
     problem  in  UTC-based  time  functions  was  introduced.   An
     application detected roughly an order of magnitude increase in
     elapsed time due to the decc$__utc_mktime CRTL function.  This
     slowdown was attributed to the change  done  in  thread  local
     storage macros when these macros were made AST-safe.

  o  Exec functions failed with the  errno  set  to  ENOEXEC  (exec
     format  error)  when  requested to activate a shareable image.
     The regression was introduced in ALPACRT03_071 and the problem
     happened  on  OpenVMS V7.1 or higher, when using the DEC C RTL
     backport object library.

  o  The mmap function was enhanced to accept an  optional  integer
     argument  specifying  additional  flags  to  be  passed to the
     SYS$CRMPSC  system   service   for   a   MAP_SHARED   request.
     Applications  making  use  of  an  additional argument must be
     compiled with DEC C Version 6.0 or higher.  The new  signature
     of the mmap function is as follows:

          void mmap (void *addr, size_t len, int prot, int flags,
                     int filedes, off_t off); (X/OPEN, POSIX)

          void mmap (void *addr, size_t len, int prot, int flags,
                     int filedes, off_t off ...); (DEC C EXTENSION)

     Using the  optional  argument,  the  caller  can  create,  for
     example,   a  system  global  section  (SEC$M_SYSGBL  bit)  or
     permanent global section (SEC$M_PERM bit).  Here, to create  a
     system  permanent  global  section,  the  caller  can  specify
     (SEC$M_SYSGBL | SEC$M_PERM) in the optional argument.

     The mmap function does not check or set any  privileges.   The
     caller's responsibility is to set appropriate privileges, such
     as the  SYSGBL  privilege  for  SEC$M_SYSGBL  and  PRMGBL  for
     SEC$M_PERM, before calling mmap with the optional argument.

  o  The DECC$FIX_TIME function could return  a  meaningless  value
     and  the  caller  had  no  way  to  check whether the function
     succeeded or not.

     The DEC C RTL Manual shipped with  the  DEC  C  V6.0  compiler
     indicates that the DECC$FIX_TIME function may fail as follows:

         Return Values

         x                       A longword containing the number of
                                 seconds since 00:00 January 1, 1970.

         (unsigned int)(-1)      Indicates an error. Be aware, that a
                                 return value of (unsigned int)(-1) can
                                 also represent a valid date of
                                 Sun Feb 7 06:28:15 2106.

  o  A POW function call resulted in an %SYSTEM-F-HPARITH exception
     when  called  in a D_FLOAT floating point mode with the result
     maximum value representable in D_FLOAT format.


Problems addressed in ALPACRT06_071:

  o  After upgrading a system from OpenVMS V6.2 to OpenVMS V7.1,
     there is an incompatible change in the record generation
     mechanism for a file with a Fortran carriage control, when
     used with "ctx=nocvt" and "mrs=132" and the data does not
     contain record terminators (line-feed characters).

     On OpenVMS V6.2, for such a file, the record is generated on
     each call to the C RTL output function regardless of whether
     the data contains record terminators or not.  On OpenVMS V7.1,
     the C RTL accumulates the data until the maximum record size
     is reached and, then, writes everything as a single record.

     While the new behavior is in line with the description of processing 
     RMS files in record mode in the DEC C Run-Time Library Reference 
     Manual, for compatibility consideration a way to request the old 
     behavior was provided.  The behavior can be enabled by defining the 
     logical name DECC$V62_RECORD_GENERATION (any equivalence string).

  o  A new function facilitating validation of a wide character was
     implemented.  The function has the following interface:

       int decc$validate_wchar(wchar_t wc);

     The decc$validate_wchar function returns 1 (one) if the
     specified wide character is a valid wide character in the
     current program's locale and zero otherwise.

  o  lseek and fseek functions have been fixed to position a
     fixed-length record file to the last written byte when
     SEEK_END is specified.  Prior  to  this, the functions were
     positioning such a file at the end of the last fixed-length
     record regardless of whether the last record contained a full
     amount of data or not.  So that this correction does not break
     existing applications, the new behavior must be enabled by
     defining the logical name DECC$FIXED_LENGTH_SEEK_TO_EOF (any
     equivalence string).

  o  Two new fcntl requests defined by X/Open and POSIX were
     implemented:

       #include 
       #include 
       #include 

       int fcntl(int fildes, F_SETFD, FD_CLOEXEC);
       int fcntl(int fildes, F_GETFD);

     fcntl(fildes, F_SETFD, FD_CLOEXEC) sets the FD_CLOEXEC flag
     for specified file descriptor.  If the FD_CLOEXEC flag is set,
     the file descriptor is not passed to a child process spawned
     by one of the exec functions.  In other words, FD_CLOEXEC flag
     prevents normal inheritance of the open file descriptor by the
     child process.

     fcntl(fildes, F_GETFD) returns flags associated with specified
     file descriptor.  If FD_CLOEXEC flag is set, fcntl will
     return FD_CLOEXEC.

  o  A customer reports that ioctl fails with "can't assign
     requested address" status  when called with FIONREAD request
     code for a socket device.  The cause of the failure is that
     FIONREAD macro is defined differently in  header and
      header and underlying UCX routine expects the
     value from  header.  The ioctl function was
     fixed to call UCX routine with the value of FIONREAD presented
     in  header.

  o  The child process spawned by one of the functions from the exec 
     family does not inherit the file offset and file append mode 
     from the parent as required by X/Open specifications and the 
     POSIX standard.  To have this correction not break existing 
     applications, the correct behavior of inheritance of the file 
     offset and append mode by the child process must be enabled by 
     defining the logical name DECC$EXEC_FILEATTR_INHERITANCE 
     (any equivalence string) prior to the first call to any function 
     from the exec family.


Problems addressed in ALPACRT05_071:

  o  The cache of values introduced in the getenv function caused
     regressions to occur in numerous applications.  The default
     has been changed from using the cache to only using the cache
     when a specific logical is set.  This new logical, 
     DECC$ENABLE_GETENV_CACHE, should be set prior to invoking an
     application whose performance depends on using the getenv
     cache.  The logical DECC$DISABLE_GETENV_CACHE is no longer
     used.

  o  The CRTL uses the system default (DEFMBXMXMSG SYSGEN parameter) 
     for the mailbox maximum message size (maxmsg) while creating
     a mailbox associated with the pipe.  Before this change, the 
     maxmsg was set to 512, the value documented in the description of 
     the pipe function in the DEC C Run-Time Library Reference Manual 
     for OpenVMS Systems.  Since the read function transfers not more 
     than maxmsg bytes from a pipe, this change broke applications 
     relying on the 512 bytes limit.  The errant code was introduced 
     in the ECO named ALPACRT04_071.

  o  Attempts to open a network mailbox fail.

  o  A correction was made to the rewind function which now works
     correctly for a file opened using the append access mode.

  o  The fread function no longer access violates when passed
     stdin.  This error only occurred when the stdin file
     descriptor was a socket descriptor inherited from a parent 
     C process.

  o  The dup2 function would access violate when called with the
     second file descriptor larger than 256.

  o  An ISV porting software to OpenVMS sought assistance in
     handling parameters being passed to the image when invoked as
     a foreign command.  A new function has been added which gives
     an application control over how arguments to the image are
     obtained.  The new function is specified as:

       int decc$$set_get_foreign(const char* image_name,
                                 const char* image_location,
                                 const char* routine_name)

     If this function is called prior to the C main program, the
     DEC C RTL will call this routine instead of LIB$GET_FOREIGN to
     obtain the parameters.

  o  Performance improvements previously applied to only the
     sprintf function being called with a "%s" format specifier
     have now been made in all functions which use thread specific
     data.  Applications which use DECthreads and the DEC C RTL may
     see significant performance improvements when calling functions 
     which use thread specific data, such as those listed in section 
     1.7.1 of the reference manual.

  o  Data inconsistencies occurred when the sprintf function was
     called by both an AST routine and the main program.

  o  It was reported that the functions strtol, strtoul, wcstol,
     wcstoul, and the OpenVMS Alpha specific functions strtoq and
     strtouq do not consume the trailing digits after an overflow
     condition.  This behavior is required by the ANSI standard.
     To have this correction not break existing applications, the
     correct behavior of consuming these characters must be enabled
     by defining the logical name DECC$STRTOL_ERANGE prior to the
     first call to any of these functions.


Problems addressed in ALPACRT04_071:

  o  The mmap function no longer fails if a  file  is  opened  with
     read  access  and  the  calling program has specified both the
     PROT_WRITE and MAP_PRIVATE flags.   The  correct  behavior  of
     using  the MAP_PRIVATE flag is to disregard the access mode of
     the opened file.

  o  The opendir function no longer fails if a file having the same
     name,  but  no  extension, exists in the same directory as the
     directory being opened.   Prior  to  this  change,  having  an
     extensionless  file  in  the  same  directory as the directory
     being opened would fail, even if the full name  and  extension
     was used in the opendir call.

  o  Changes made in OpenVMS V7.0 have affected the  processing  of
     files  having  "FORTRAN  Carriage  Control" record attributes.
     The following changes were introduced in OpenVMS V7.0 and  are
     repaired in this ECO kit:

       +  The DEC C RTL now prepends (instead of  appends)  linefeed
          characters  to  records  with  the  single-space  carriage
          control.  This was the behavior  prior  to  OpenVMS  V7.0.
          Prefixing  this  type of record with linefeeds is what RMS
          requires and allows overprinting to work better than  when
          the linefeed was appended.

     The only known problem  with  the  new  version  is  that  the
     carriage-control  character  is  not  generated after the last
     file record.  This problem will be fixed in the  next  release
     of CRTL."

  o  A regression was introduced in the VAXACRT03_071 ECO kit  such
     that  calls  to  the  stat function which use the "DNA=STRING"
     parameter access violate.  Calls  to  fopen  may  also  access
     violate when the fopen function calls stat to determine if the
     file exists.

  o  A request was made that the sysconf function  be  enhanced  to
     return   information   about   the  processors  in  a  system.
     Specifically the _SC_NPROC_CONF (200) and _SC_NPROC_ONLN (201)
     options  are  now  supported.   Modifications  to the UNISTD.H
     header file to define these constants will be  made  available
     in  a future release of the DEC C compiler.  It is recommended
     that application developers add the code

       #ifndef _SC_NPROC_CONF
       #   define _SC_NPROC_CONF 200
       #   define _SC_NPROC_ONLN 201
       #endif

     until these definitions are available.

  o  A problem related to the size of an intermediate  pipe  buffer
     may  lead to a write operation receiving a %SYSTEM-F-MBTOOSML.
     The size of the buffer has been corrected.

  o  The access  function  would  incorrectly  examine  the  SYSTEM
     protection  codes and use those codes in determining if access
     would be allowed.

     The access function required that all requested  access  modes
     be  available  in  a single group of OpenVMS protection codes.
     The access modes may now  be  spread  across  protection  code
     groups such as world, group, owner, and system.

  o  A user reported that the sprintf function, when called using a
     simple  "%s"  format  specifier  performed worse in a threaded
     application than the  equivalent  call  to  strcpy.   We  have
     changed  the  processing  of  "%s" to perform in line with the
     strcpy function for this format specifier.

  o  Beginning in the  ALPACRT03_071  and  ALPY2K01_071  ECO  kits,
     calling  the  getenv  function  for  the "TERM" variable began
     returning the string "name-80" instead of correctly  returning
     the terminal type such as "VT320-80".

  o  Beginning  in  the  ALPACRT03_071  remedial  kit,  the   ioctl
     function  defaults  to  using  the  software  available as the
     UCX$IOCTL_ROUTINES example code.  An  error  in  the  original
     code  is  that  if  an  error  were to occur, a system service
     status code (such as SS$_ACCVIO) would be returned as an errno
     value.    This   has  been  corrected  to  return  either  the
     corresponding errno value or  EVMSERR  with  vaxc$errno  being
     assigned this system service status code.


Problems addressed in ALPACRT03_071:

  o  Users have requested that kill support the POSIX  semantics  of        
     "if  the  process id is negative but not -1, the signal will be        
     sent to all processes whose group ID is equal to  the  absolute        
     value  of  the  process  id,  and  for  which  the  process has        
     permission to send a signal." This  has  been  added  with  the        
     restrictions that the process is executing on the same node and        
     does not have a SYSTEM UIC.  The errno value is set to ESRCH if        
     no processes are found which match the condition specified.            
                                                                        
  o  An enhancement was made in the DEC C V5.6 compiler to  optimize        
     certain  format  strings passed to the printf family of library        
     functions.  This ECO  kit  adds  the  runtime  support  to  the        
     shareable  image.  Prior to this, the symbols were resolved via        
     objects added to STARLET by the compiler.  Full details of this        
     support can be found in the DEC C V5.6 release notes.                  
                                                                        
  o  The performance of DEC C sprintf was much slower  than  VAX  C.        
     An  analysis  of  the  printf  engine resulted in changes which        
     brings DEC C within 10% of VAX C.                                      
                                                                        
  o  The functions fopen and freopen  were  mapping  invalid  access        
     modes to read mode.  Invalid modes now cause errno to be set to        
     EINVAL and the open call to fail.                                      
                                                                        
  o  The times function was changed in OpenVMS V7.0  to  return  the        
     number  of  clock  ticks since boot time.  Performing year 2000        
     testing by setting the system time forward causes  this  return        
     value  to  overflow.   The  times  function has been changed to        
     return the number of clock ticks since  login  time,  which  is        
     less likely to overflow.                                               
                                                                        
  o  The lseek function may position incorrectly with repeated calls        
     to  seek,  in  a  file  containing  fixed length records of odd        
     length.  This problem  does  not  occur  with  even  length  or        
     variable length records.                                               
                                                                        
  o  Mailbox  devices  are  record  oriented  devices,  except  when        
     created  by  the  pipe function where they are opened as stream        
     devices.  Applications which use mailboxes can  now  force  the        
     library to treat all mailboxes as stream devices by creating an        
     environment variable named DECC$MAILBOX_CTX_STM.                       
                                                                        
  o  The runtime library has been corrected to treat UNIX  directory        
     specifications identically in each of the routines which accept        
     a  directory  specification  as  a  parameter.   These  runtime        
     library functions are access, opendir, mkdir, and rmdir.  Prior        
     to this change, one could call opendir with "/dev/dir", but was        
     forced  to  append  ".dir"  to  this  when  calling  the access        
     function.                                                              
                                                                        
  o  This ECO kit includes major performance improvements when using        
     time related functions along with Universal Coordinated Time.          
                                                                        
  o  A cache of values has been added  to  the  getenv  function  to        
     avoid  the library making repeated calls to translate a logical        
     name or to obtain a  symbol  value  for  environment  variables        
     which  are  not set.  If your application makes direct calls to        
     set logical names, this caching can  be  disabled  by  defining        
     DECC$DISABLE_GETENV_CACHE  prior to calling any runtime library        
     functions.                                                             
                                                                        
  o  The ANSI standard states that streams opened in update mode may        
     read  and  write  to  the stream.  It further states that reads        
     must be followed by file positioning prior to  writing  to  the        
     stream.   The  problem corrected was that positioning functions        
     would fail when the file was a terminal.  Applications may  now        
     position such streams back to the beginning using either rewind        
     or seek.                                                               
                                                                        
  o  It was reported that opendir overflowed the stack when  running        
     in  a threaded application.  While correcting this problem, the        
     opendir successful return value was changed from one to zero to        
     align with the X/Open Specifications.                                  
                                                                        
  o  A problem introduced in OpenVMS V7.1 causes the first record of        
     a  file  to  be  overwritten  when the file is opened in append        
     mode.  The correct behavior is that all  write  operations  are        
     done at the end of the file.                                           
                                      
  o  Porting code to OpenVMS is hampered by the  difference  between        
     command  procedures  and  executable  images and the mechanisms        
     necessary to invoke them.  When passed the string  "TEST",  the        
     exec   functions   now  searches  for  "TEST.","TEST.EXE",  and        
     "TEST.COM".  If found, it is executed as either an image  or  a        
     command procedure, depending on information in the file header.        
                                                                        
  o  Several new universals have been added to  the  DECC$SHR  image        
     shipped  with  this  ECO kit.  The presence of these universals        
     may affect application developers who compile using this image.        
     If a developer begins to get errors of the form                        
                                                                        
     %LINK-W-MULDEF, symbol DECC$XXX multiply defined                       
     in module DECC$SHR file SYS$COMMON:[SYSLIB]DECC$SHR.EXE;1              
                                                                        
     while linking the application, the compile  command  should  be        
     modified  to  include "/PREFIX=EXCEPT=XXX".  This instructs the        
     compiler to exclude this function when  doing  name  prefixing,        
     which is equivalent to the behavior prior to this ECO kit.             
                                                                        
  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  Several functions were found to not accept  the  angle  bracket        
     form  of  directory  specifications.   These  functions include        
     decc$translate_vms and stat, which  now  accept  either  square        
     brackets  or  angle  brackets  in the directory portion of file        
     specifications.                                                        
                                                                        
  o  The exec functions  use  a  mailbox  to  coordinate  open  file        
     information  between  the  parent  and child processes.  A user        
     reported their system hung after 1000 successful invocations of       
     the  same  child  process.   This hang was caused by the parent        
     process failing to release an exclusive mode lock being used to        
     coordinate  access to the mailbox.  The hang would occur when a        
     mailbox was assigned to the parent process for a second time.          
                                                                        
  o  A user reports calling ioctl sets errno to ENOSYS (Function not        
     implemented).   Beginning  with OpenVMS V7.0, the library looks        
     for support in the underlying TCPIP stack and sets  this  error        
     if the support is not found.  The function has been enhanced to        
     execute UCX$EXAMPLES:UCX$IOCTL_ROUTINES under these conditions.        
                                                                        
  o  The decc$to_vms function has been enhanced to  recognize  names        
     found  on  other  systems,  converting  "/dev/null" to "NLA0:",        
     "/tmp" to "SYS$SCRATCH:", and "/bin" to "SYS$SYSTEM:".                 
                                                                        
  o  The getpwnam function now uppercases the username parameter  if        
     it  is  not  found in its original form.  Prior to this change,        
     the function would fail.                                               

 
Problems addressed in ALPACRT02_071:
                                                                              
  o  Those functions, such as printf,  which  have  thread  specific          
     data  incorrectly  use  the  threads  interface to release that          
     memory when a thread is being destroyed.  The  result  is  that          
     all thread specific memory is lost.                                      
                                                                              
  o  The read, fread, write, and fwrite  DEC  C  RTL  functions  now          
     return  unsuccessful  status with errno set to EINVAL if one of          
     the arguments of size_t type or total number  of  bytes  to  be          
     transmitted is not in the range 0 to INT_MAX.  The total number          
     of bytes is the product of the  size_of_item  and  number_items          
     arguments for fread and fwrite functions.  The value of INT_MAX          
     is defined in the  header file.                                

  o  The interval timer function, setitimer, fails to  reset  itself          
     when  used  in  a  multithreaded  application.  The result is a          
     single firing of the timer as opposed to repeated firing of the          
     timer at fixed intervals.                                                
                                                                              
  o  A change made in  OpenVMS  V7.1  and  remedial  kits  to  other          
     versions  cause calls to the mktemp function using templates of          
     the form "dumpXXXXXX.txt" to no longer substitute  the  pattern          
     with  the  process id.  While a change is necessary to prohibit          
     substituting the  directory  portion  in  a  template  such  as          
     "[XX]dumpXXXXXX",  the  change  that was made was overly harsh,          
     forcing all substitution to the end of the pattern.                      
                                                                              
  o  The strstr function accesses memory  beyond  the  ends  of  the   
     strings   passed.    In  cases  where  the  next  page  is  not          
     accessable, the result is an access violation.  The problem was          
     reported  against  the  ADA  compiler,  which  uses  the strstr          
     function in this way.                                                    
                                                                              
  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  The ECO kits ALPACRT01_071 and VAXACRT01_071  made  changes  to          
     the  return  value of the puts and fputs routines.  While these          
     changes were in line with the documentation, which states  that          
     they   return   non-negative   numbers   on  success,  specific          
     applications were coded to expect zero as success.  Since  this        
     zero return value was documented with the VAXC product, we have          
     restored the original behavior.                                          
                                                                              
  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  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 ALPACRT01_071:

  o  Calling stat from two separate threads will cause them to                
     interfere with one another.  The stat function has been                  
     modified to use a thread-specific buffer to store data.                  
                                                                              
  o  Extra  characters are seen on occasion when using a                  
     subprocess which sends data back to the parent process                   
     using a mailbox.                                                         
                                                                              
  o  A case has been found where the fseek function fails,                    
     correctly returns -1 value, but fails to set errno properly.             

  o  One of the arguments to the decc$to_vms function is "allow_wild"         
     which is documented to accept the values zero and one.  If               
     wildcards are used in the file specification, they are either            
     rejected or expanded into the resultant file specifications.             
     Passing a value of -1 for the allow_wild parameter now returns           
     the file specifications with the wildcards intact, but after             
     having prepared to the point of doing a sys$search.                      
                                                                              
  o  Unlike Digital UNIX, the fsync(socket_id) call results in an             
     access violation instead of returning an EINVAL status.                  
                                                                              
  o  A user reports and demonstrates that opening and closing                 
     sockets does not properly release mutexes which eventually               
     causes the resource to be exhausted.  This problem was              
     introduced in OpenVMS V7.0.                                              
                                                                              
  o  Applications which call opendir and readdir recursively                  
     to traverse subdirectories may end up in an infinite loop                
     when reading the directory which includes returning the                  
     [000000]000000.DIR.  The readdir function no longer returns              
     an entry which is equivalent to the directory being read.                
                                                                              
  o  OpenVMS V7.1 changed the behavior of the readdir function                
     so that it no longer retains the ".dir" extension when                   
     returning a directory using the UNIX file syntax.  Applications          
     which rely on this extension can now define a the                        
     DECC$READDIR_KEEPDOTDIR logical to restore this behavior.                
                                                                              
  o  Beginning with OpenVMS V7.1, the DEC C Runtime Library does              
     not read the first record while opening the file if such                 
     preloading will cause RMS to lock the record.  Several reports           
     have been made which stated that images which used to work               
     fine now fail.  The preloading code record has been modified             
     to take these programs into account.                                     


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 V7.1 systems.  

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