Australia - Updated: 24-SEP-2003
hp.com home products and services support and drivers solutions how to buy
» contact hp
hp.com home hp OpenVMS ECOs

IMPORTANT NOTICE

The online distribution of OpenVMS and related product patches is being migrated to the HP ITRC (Information Technology Resource Center) patch distribution site. The new ITRC patch server will allow OpenVMS customers to take advantage of many enhanced features for patch searching and distribution.

Beginning August 1, 2003, OpenVMS and related Layered Product, publicly available patches will be available from the HP ITRC web site at

http://itrc.hp.com/service/patch/mainPage.do

The same patches will still be available from the existing patch server in Colorado Springs (http://www.support.compaq.com/patches/) through the end of October 2003, to give customers sufficient time to update their bookmarks and make the transition to the HP ITRC web site.

ECO kits will also be available by raw FTP from (ftp://ftp.itrc.hp.com/).

PLEASE UPDATE YOUR BOOKMARKS AND REGISTER ON THE NEW SITE NOW

Note: if you're having trouble connecting to the ITRC site, please delete any cookies for "itrc.hp.com" from your browser and try again. Report any difficulties with or suggestions to MrVMS

» Sydney CSC home page

Navigation
» ECOinfo main index
» Search ECOs
» Search FTP site
» Browse FTP site

ECO Indexes
» Chronological Index
» Indexed by Version
» Indexed by Rating
» Alpha Indexed by Name
» VAX Indexed by Name
» On Hold List

Associated Links
» OpenVMS Home Page
» OpenVMS News
» DIA/WIS Web Service

Feedback
» mail to CSC
.
Sydney Customer Support Centre OpenVMS ECO information
    Updated: 24-SEP-2003 (Use your browsers' Reload button to ensure you're viewing the most recent version)

ALPACRT09_071 Alpha V7.1-7.1-1H2 DEC C Run-Time Library ECO Summar

To obtain this kit please call the Customer Support Centre or use the FTP site

Search for this ECO kit and dependencies
Search the Compaq FTP web site this kit (exact match)
Search the Compaq FTP web site this or related ECOs

    
    
    Copyright (c) Compaq Computer Corporation 1998, 1999.  All rights reserved.
    
    Modification Date:  19-OCT-1999
    Modification Type:  Documentation Update.  Please see note in
                        Kit Dependencies section.
    
    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 <types.h>
           #include <unistd.h>
           #include <fcntl.h>
    
           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 <ioctl.h> header and
         <ucx$inetdef.h> header and underlying UCX routine expects the
         value from <ucx$inetdef.h> header.  The ioctl function was
         fixed to call UCX routine with the value of FIONREAD presented
         in <ucx$inetdef.h> 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 <limits.h> 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 <lf> 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.
    
    
    RELATED ARTICLES:
    
    Detailed articles describing the problems listed above may exist in
    the OPENVMS database.  To view these articles, open the appropriate
    product database and perform a query using either of the following
    search strings: 'ALPACRT09_071' or 'ALPACRT'
    
    
    ECO KIT ORDERING INSTRUCTIONS:
    
    If after an evaluation you wish to obtain this kit, request it
    electronically using the appropriate Advanced Electronic Services
    (AES) Service Tool.  If you are not familiar with how to request
    kits electronically, open the DIA, WIS or DSNLINK database and
    review the article entitled:
    
         [AES] How To Electronically Request ECO Kits Using Service Tools
    
    
    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.
      
      ==========================================================================
      |                     Table of Kit Image Information                     |
      +----------------------------+----------+-----------------+--------------+
      |                            | Overall  | Image File      | Image Link   |
      | Image Name                 | Checksum | Identification  | Date/Time    |
      +----------------------------+----------+-----------------+--------------+
      | DECC$SHR.EXE               | 67251A2B | X07.1-4         | 19-AUG-1999  |
      |                                       |                 | 12:23:39.11  |
      +----------------------------+----------+-----------------+--------------+
    
privacy statement using this site means you accept its terms feedback to the webmaster
VMS rules VMS rocks OpenVMS rules OpenVMS rocks