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)

VAXACRT10_071 VAX V7.1 DEC C RTL ECO Summary

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 1997, 1999, 2001.  All rights reserved.
    
    New Kit Date     :  28-SEP-2001
    Modification Date:  Not Applicable
    Modification Type:  Updated Kit  Supersedes VAXACRT09_071
    
    PRODUCT:    OpenVMS VAX
    
    COMPONENT:  DEC C RTL - DECC$SHR.EXE
                CRTLMSGDEF.OBJ   (Updates STARLET.OLB)
                CRTL.OBJ         (Updates STARLET.OLB)
                ACRT$ECO_DROP.COM   (If desired, this command file
                                     may be used to remove the ECO
                                     and restore the original
                                     files and libraries.)
    
    SOURCE:     Compaq Computer Corporation
    
    ECO INFORMATION:
    
         ECO Kit Name:  VAXACRT10_071
         ECO Kits Superseded by This ECO Kit:  VAXACRT09_071
    					   VAXACRT08_071
                                               VAXACRT07_071
                                               VAXACRT06_071
                                               VAXCRTL05_071
                                               VAXACRT04_071
                                               VAXACRT03_071
                                               VAXACRT02_071
                                               VAXACRT01_071
         ECO Kit Approximate Size:  4080 Blocks
         Kit Applies To:  OpenVMS VAX V7.1
         System/Cluster Reboot Necessary:  Yes
         Rolling Reboot Supported:  Yes
         Installation Rating:  INSTALL_3
                               3 - To be installed on all systems running
                                   the listed versions of OpenVMS which
                                   are experiencing the problems described.
    
         Kit Dependencies:
    
           The following remedial kit(s) must be installed BEFORE
           installation of this kit:
    
             None
    
           In order to receive all the corrections listed in this
           kit, the following remedial kits should also be installed:
    
             None
    
    
    ECO KIT SUMMARY:
    
    An ECO kit exists for DEC C Run-Time Library on OpenVMS VAX V7.1.
    This kit addresses the following problems:
    
    PROBLEMS ADDRESSED IN VAXACRT10_071 KIT:
    
         o  Function mktime()'s algorithm  locked  thread  specific  data,
            which  didn't  need  to  be  done.   This  change  uses  stack
            allocated data, and improves performance.
    
    
         o  Function open() had unnecessary calls  to  SYS$GETJPI.   These
            were removed.
    
    
         o  Several  problems  in  function  mmap()  and   munmap()   were
            addressed.
    
               -  Function munmap()  would  sometimes  fail  when  releasing
                  memory  allocated  with  MAP_ANON.   This  is  because  it
                  wrongly tried to deassign a  file  channel  that  was  not
                  associated with the memory range.
    
               -  Function mmap() was incorrectly specifying  global  memory
                  when MAP_ANON is specified.
    
                  Change will only do this with flag MAP_SHARED specified.
    
    
         o  Function  gettimeofday()  now  sets   errno   and   vaxc$errno
            appropriately  if  UTC time functions fail because of a system
            service failure.
    
    
         o  The file creation functions (fopen,  open,  creat)  have  been
            corrected to not inherit file attributes if a directory by the
            same name exists for the file  being  created.   For  example,
            creating  a file named "foo." in a directory which contained a
            "foo.dir" would incorrectly inherit file attributes from  this
            directory file.
    
    
         o  The stat  function  no  longer  puts  the  wrong  values  into
            st_?time  members  of  the  stat  structure.   More precisely,
            during daylight savings time the values  of  st_?time  are  no
            longer  one  hour  ahead  from file creation/modification time
            reported by the $DIRECTORY command.
    
    
         o  The time functions  time,  ftime,  gettimeofday  and  getclock
            would  fail for a TDF (time differential factor) of -13 hours,
            the value required in New  Zealand.   According  to  the  U.S.
            Naval  Observatory  information the valid range for the TDF is
            -13.75 to +13, inclusive.  The C  RTL  now  allows  this  full
            range.
    
    
         o  In the previous ECO  kit,  a  change  was  introduced  to  the
            function   strptime()   for   XPG5-compatibility   to   handle
            expressions for the 2-digit year format %y  when  the  century
            was  not  specified.   The requirement is for 2-digit years in
            the range 0-68 to be treated as 21st century and years in  the
            range  69-99  as 20th century.  The 2-digit years in the range
            69-99 were incorrectly being treated as 21st century.
    
    
         o  The execlp and execvp functions were unconditionally prefixing
            the  file  specification  of  the image to be run in the child
            process  with  "VAXC$PATH:"  string.   When  passed  a   fully
            qualified  file specification, this would result in an invalid
            file specification.
    
    
         o  The behavior of lseek() and fseek() at  positions  beyond  the
            end  of  data  in a file were not conforming to the POSIX/ANSI
            standard.  The file was being physically null padded  on  disk
            even  though  the  standard only requires this null padding if
            data is actually written at this point.  In the case  reported
            by  the  user,  seeking  to the end of a file by using a large
            offset would take a long time and may exhaust  available  disk
            space.    To   get   the   POSIX  behavior,  you  must  define
            DECC$POSIX_SEEK_STREAM_FILE as "ENABLE".  The default behavior
            is unchanged.
    
    
         o  The Compaq C RTL was enhanced to open  all  files  for  shared
            access as if the "shr=del,get,put,upd" option was specified in
            the open* or creat call.  To enable this feature,  define  the
            logical  name  DECC$FILE_SHARING  to  the value "ENABLE".  The
            value is case-insensitive and is checked only once  per  image
            activation, not on a file-by-file basis.
    
    
         o  The Compaq C RTL was failing when the amount of  data  written
            to  a pipe exceeded the buffer size of that pipe.  The RTL now
            breaks the large write into a sequence of writes whose size is
            the size of the underlying mailbox used to implement pipes.
    
    
         o  A problem was reported that the RTL could hang  if  exit  were
            called  while  threads  were  continuing  to do I/O.  Analysis
            showed that the hang was caused by a thread holding  the  lock
            necessary  to  close the file and the exit handler blocking on
            this lock.  The change implemented was to not attempt to close
            files whose locks were currently in use.
    
    
         o  When a  stream  file  is  extended  using  ftruncate()  it  is
            documented  that the extended area will be filled with zeroes.
            This is now done correctly.  Prior to this  change,  the  file
            was not extended.
    
    
         o  The documentation  of  the  select  function  states  that  it
            returns  either  when a socket is ready to be read or written,
            when the timeout period expires, or when exceptions occur.  It
            was not properly terminating when an exception occurred.  This
            problem was corrected by dynamically linking to and calling an
            abort  function  in the socket library.  A complete correction
            to interrupting the select function will also require  an  ECO
            kit  from  the  Compaq  TCP/IP product which includes this new
            abort function.
    
    
         o  The fstat function was corrected to not  access  violate  when
            called   with   stdin,   stdout,   stderr,   or   a  directory
            specification.
    
    
         o  The chdir function was  not  well  behaved  when  the  calling
            program  passed  an  argument which was a search list logical.
            The chdir function was unconditionally  changing  the  logical
            sys$disk   to   the  first  member  of  the  search  list  was
            effectively dropping the remaining members.  More work may  be
            done in this area in future releases of the C RTL.
    
    
    PROBLEMS ADDRESSED IN VAXACRT09_071 KIT:
    
         o  getenv() function looks for CLI symbol only in user mode
    
              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  strptime() function made XPG5-compliant
    
              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  stat() function processes  top-level  directory  of  concealed
            device
    
              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  system() function always returns correct status
    
              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.
    
              None of these problems were ever reported by a customer.
    
    
    
         o  opendir() and readdir() functions process remote directory
    
              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  times() and clock() functions were made AST-reentrant
    
              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  stat() function no longer fails due  to  failure  of  mktime()
            function
    
              The stat() function no longer fails due to the failure of  the
              mktime() function.
    
              It was reported that the stat()  function  fails  for  a  file
              created  on  April  4th  1999  at 2:04 a.m.  EST, which is the
              "missing hour" in the transition  from  standard  to  daylight
              saving time in the Eastern time zone.
    
              The problem was due to the failure of the mktime() function to
              process  the  "missing  hour"  (stat()  calls mktime() to fill
              st_?time members of the stat structure with the UTC time).
    
              While the mktime() function was not fixed, the stat() function
              was  corrected  to  handle  the  failure  of  mktime() and set
              st_?time fields correctly, even if mktime() fails.
    
              Note, that, strictly speaking, "missing hour"  is  an  invalid
              input  for mktime():  there is no such time as "April 4th 1999
              2:04 a.m.", for example, in the Eastern time zone.  Given  the
              possibility  of  calling  mktime()  with  an invalid time, the
              stat() function probably should not have used mktime() in  the
              first  place  or  at  least  should  have  been prepared for a
              mktime() failure.
    
    
    
         o  select() function was made standard compliant
    
              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  "Y2038 bug" fixed
    
              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  Improved handling of low memory condition by printf()
    
              The printf() family of functions have been enhanced to perform
              better  when  the  calling application has exhausted available
              memory.
    
    
    
         o  Fixed access to files on UNIX over DECnet
    
              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 VAXACRT08_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 VAXY2K01_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 VAXACRT02_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).
    
         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 VAXACRT03_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.
    
         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 VAXACRT06_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 VAXACRT03_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.
    
    
    Problems addressed in VAXACRT07_071:
    
         o  Installation of the VAXACRT06_071 remedial kit failed due to
            a global symbol error.
    
    
    Problems addressed in VAXACRT06_071:
    
         o  Internal  testing  revealed   that   on   DIGITAL   UNIX,   the
            en_US.ISO8859-1  locale  classifies the <y-diaeresis> character
            (codepoint xff) as a print and graph character as it should be,
            while  on  OpenVMS  this  character  does  not  belong  to  any
            character class.
    
         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
            a  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, the FD_CLOEXEC flag
            prevents normal inheritance of the open file descriptor by  the
            child process.
    
            Fcntl(fildes,  F_GETFD)  returns  flags   associated   with   a
            specified  file  descriptor.   If  the FD_CLOEXEC flag was set,
            fcntl will return FD_CLOEXEC.
    
         o  The ioctl fails with a "can't assign requested address"  status
            when  called  with  FIONREAD  request code for a socket device.
            The cause of the failure is that the FIONREAD macro is  defined
            differently  in the <ioctl.h> header and in the <ucx$inetdef.h>
            header.  The underlying UCX routine expects the value from  the
            <ucx$inetdef.h>  header.   The ioctl function was fixed to call
            the UCX routine with the value of  FIONREAD  presented  in  the
            <ucx$inetdef.h> header.
    
         o  The child process spawned by one of the functions from the exec
            family didn't inherit the file offset and file append mode from
            the parent as required by the  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.   This  enabling  is
            done       by       defining       the       logical       name
            DECC$EXEC_FILEATTR_INHERITANCE (any equivalence  string)  prior
            to the first call to any function from the exec family.
    
         o  With the retirement of the  OpenVMS  POSIX  product,  providing
            capabilities  and  interfaces  defined  by  the  POSIX standard
            becomes extremely important.  Hence, the DEC  C  RTL  is  often
            perceived  by customers as a "natural" replacement of the POSIX
            run-time environment on the OpenVMS system.
    
            This checkin adds to the DEC C RTL shm_open() and  shm_unlink()
            shared  memory  functions.   They  are  defined  by  the  POSIX
            Realtime Extension (1003.1b-1993/1003.1i-1995) and  X/Open  CAE
            Specification,  Issue 5.  Both functions exist on OpenVMS POSIX
            and DIGITAL UNIX.
    
            With the new DEC C V5.7 compiler, an OpenVMS build of the  CRTL
            facility   fails   on   compilation  of  CRTL  mapping  tables:
            RTLENTRIES.C module.  The failure is:
    
             $ CC/NOLIST/NOPREFIX/OBJECT=OBJ$:RTLENTRIES.OBJ -
                                         SRC$:RTLENTRIES.C
    
             CXXENTRY("__nw__xui",      ANSI, ____, ____, ____, ____, ____,
             ____, ____, ____, ____),
             ^
             %CC-W-TOOMANY, In the initializer for routine_names, there are
             855 elements, which is 854 too many.  The  extra  initializers
             will be ignored.
    
         o  The system default (DEFMBXMXMSG SYSGEN parameter) was used  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.  Since the  read
            function transfers not more than maxmsg bytes from a pipe, this
            change broke applications relying on the 512-byte limit.
    
         o  Functions lseek and fseek were fixed to position a fixed-length
            records  file  to  the  last  written  byte  when  SEEK_END  is
            specified.  Previously, the functions were positioning  such  a
            file  to the end of the last fixed-length record, regardless of
            whether the last record contains a full amount of data or not.
    
            To have this correction 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  For an upgrade from OpenVMS V6.2 to V7.x, when writing  a  file
            with  FORTRAN  carriage  control that was used with "ctx=nocvt"
            and "mrs=132", the C Run-Time Library (RTL) no longer generated
            a  record  on  each call to the output CRTL function.  Instead,
            the RTL accumulated the data until the maximum record size (132
            bytes)  was  reached  and  then  wrote  everything  as a single
            record.
    
         o  A new function facilitating validation of a wide character  was
            implemented, which has the following interface:
    
                  int decc$validate_wchar(wchar_t wc);
    
            The decc$validate_wchar function returns 1 (one)  if  specified
            wide  character  is  a  valid  wide  character  in  the current
            program's locale and zero otherwise.
    
    
    Problems addressed in VAXCRTL05_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  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 VAXACRT04_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.
    
    
    Problems addressed in VAXACRT03_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  The performance of DEC C sprintf was three times 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.
    
         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 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 search 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 VAXACRT02_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
         accessible, 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.
    
    
    Problems addressed in VAXACRT01_071:
    
      o  The stat function now uses a thread specific buffer to store
         data.  Prior to this correction, stat called from two
         separate threads would interfere with one another.
    
      o  An ISV reports that extra <lf> characters are seen on occasion
         when using a subprocess that sends data back to the parent
         process using a mailbox.
    
      o  A case was found where the fseek function fails.  It
         correctly returns a -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  Opening and closing sockets does not properly release mutexes.
         This problem which was introduced in OpenVMS V7.0 eventually
         causes the mutex resources to be exhausted.
    
      o  Applications which call opendir and readdir recursively to traverse
         subdirectories may end up in an infinite loop when reading the
         directory that includes returning [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 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 users
         have reported that images which used to work fine now fail.
         The record preloading code has been modified to take these
         user 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: 'VAXACRT10_071', 'VAXCRTL' or 'VAXACRT'.
    
    
    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 INSTRUCTIONS:
    
    Install this kit with the VMSINSTAL utility  by  logging  into  the
    SYSTEM account, and typing the following at the DCL prompt:
    
    @SYS$UPDATE:VMSINSTAL VAXACRT10_071 [location of the saveset]
    
    The saveset location may be a tape drive, CD, or a  disk  directory
    that contains the kit saveset.
    
    Since the images in this kit will not take effect until the  system
    is rebooted, you must reboot the system after installing this kit.
    
    If you have other nodes in your OpenVMS cluster, they must also  be
    rebooted  in  order  to make use of the new image(s).  If it is not
    possible or convenient to reboot the entire cluster at this time, a
    rolling re-boot may be performed.
    
    During installation you may see the following message:
    
    %INSTALL-E-NODELSHRADR, unable to delete image with shareable address data
    -INSTALL-I-PLSREBOOT, please reboot to install a new version of this image
    
    This is not a cause for concern.  It simply means that DECC$SHR.EXE
    was   installed   as  a  resident  image,  which  is  the  standard
    configuration for OpenVMS VAX systems.  The new image will not take
    effect until the system is rebooted.
    
      
      ==========================================================================
      |                     Table of Kit Image Information                     |
      +----------------------------+----------+-----------------+--------------+
      |                            | Overall  | Image File      | Image Link   |
      | Image Name                 | Checksum | Identification  | Date/Time    |
      +----------------------------+----------+-----------------+--------------+
      | DECC$SHR.EXE               |%X0BB260CD| V7.1-005        |  9-MAY-2001  |
      |                                       |                 | 05:43:39.84  |
      +----------------------------+----------+-----------------+--------------+
    
privacy statement using this site means you accept its terms feedback to the webmaster
VMS rules VMS rocks OpenVMS rules OpenVMS rocks