From: allenb@gewgaw.csd.sgi.com (Allen M. Buchinski)
Subject: Re: IRIX 4.0.[2-5] summaries?
Reply-To: allenb@csd.sgi.com
Organization: Silicon Graphics, Inc.
Date: Fri, 17 Apr 1992 14:56:32 GMT

Dave Olson gave some good information on what the 4.0.2, 4.0.3 and
4.0.4 releases are. I'll summarize once again and will include
release note bug fixes for 4.0.4.

4.0.2 - released for Indigo Elan systems
4.0.3 - first release for Crimson systems, sent out on Crimson only)
4.0.4 - second release for Crimson system, shipped from the factory
        only with Crimson systems, and used by Customer Support as
        a bug fix release for "critical" problems until 4.0.5 is
        ready. 4.0.5 will be a "general" bug fix release.

	Customer Support will let you determine what "critical"
	problems are, however, we are making an effort to ship
	4.0.4 to ALL customers with the genlock and dial & button
	options. These should start going out within a couple of
	weeks. 

Here are the release note bug fixes for 4.0.4. Note, because we are
planning on 4.0.5 being a "general" bug fix release, we are planning
on doing a mailing to all customers when it is ready detailing what
it includes as well as instructions on how to easily get it.

Allen

-------------------------------------------------------------------

                          4D1-4.0.4 Bug Fixes


       1.  Execution_Environment

       1.1  Installation_Tools

       In previous versions of inst, you were unable to select
       subsystems for installation on maintenance images if those
       subsystems had not previously been installed.  This could
       occur if a new subsystem was added in a maintenance release.
       The tools now permit you to install these new subsystems.
       The tools continue to prohibit installation of any
       maintenance subsystems if the original product was not
       installed.

       1.2  IRIX

          + The fx utility will not attempt to exercise portions of
            disks that are larger than 2 gigabytes; previously, it
            gave error messages and attempted to forward these
            blocks.  A message is issued if the attempt is made.

          + The fx and dvhtool utilities have been modified to use
            a different algorithm for allocating space for files in
            the volume header.  All blocks in the first cylinder
            were previously reserved.  Now only the first two
            sectors are reserved.  This allows approximately 150 to
            250 Kbytes of additional space for files.  The ide
            program for the Indigo, 4D/30, and 4D/35 is larger in
            this release due to the additional graphics board
            support, and would not fit without this change.

            Note:  Because of this change, you must not use older
                   versions of these programs to modify the volume
                   header of the system disk after installing
                   4.0.3.  If you do so, you might corrupt some of
                   the files in the volume header.  If the files
                   become corrupted, you can reload them with the
                   4.0.3. dvhtool.  Other than this change, the
                   volume header is backward compatible (old
                   systems can use disks modified with the old
                   versions of these programs, and 4.0.3 systems
                   can use disks modified with the old programs).

          + fsck could destroy file systems if lost+found was full.
            Inodes that can't be reconnected owing to full
            lost+found are no longer removed.  If any reconnections
            fail for this reason, warnings are printed on
            completion.

          + fsck could destroy a file system.  fsck now can
            distinguish between a bad superblock and one that
            indicates a size larger than the partition.  If you
            have the latter situation, do not look for a secondary
            because it has probably been invoked on an incorrect
            partition; any secondary is probably bogus and has no
            connection with the real file system.

          + inst now uses fsck -mg instead of fsck -y.  More
            informative messages are printed suggesting a manual
            check if the default fsck fails.

          + The system sometimes erroneously began printing Inode
            corruption messages and exhibit a disk full condition.

          + The rcstest was erroneously omitted from the RCSsource
            archive.

          + Synchronous mode was disabled for only the first SCSI
            bus.  It is now disabled for all SCSI buses.

          + There was a multiprocessor race/security hole in fork.
            Moved initialization of child user and group IDs in
            order to close an MP timing window.  Once the new
            child's process table entry gets into the active list
            of the processes, it can be the target of kills,
            renices, etc., so it must have its IDs set up to avoid
            security violations.

          + The tilde formatting in ksh(1) was corrected.

          + mkfs sometimes dumped core due to a divide by zero
            condition.  The code now guards against zero numeric
            options in long form, improves error messages to take
            account of block special files that have no real
            corresponding device, and adds an option to specify the
            number of inodes in short form.

          + The mklv man page notes were clarified about wiping out
            old file systems.  A note was added that file systems
            are retained when extending and that use of mklv does
            not create a file system on the volume.

          + The 1/2-inch tape driver did not correctly process file
            marks in the 800 BPI mode (SCR 12374).

          + The maximum symbolic link depth was increased to 20.

          + The csh command substitution was broken with
            redirection to a file (SCR 12451).

          + uswsetlock() could hang on an unlocked lock on a
            uniprocessor system.

          + A bad file system could cause a kernel PANIC.  Don't
            try to access an inode if the number of indirect
            extents is illegal.

          + The edquota utility checked vi exit status, which is
            not guaranteed to be accurate.

          + Using od -x /dev/usr 512 could cause the system to
            hang.

          + The MAKEDEV utility was updated to create /dev/tape for
            VME SCSI and xm tape devices.

          + An incorrect statement in rtnetd(1M) about use on MP
            systems was fixed.

          + The proper number of jobs, submitted via at(1) or
            batch(1), did not always run.  This was due to improper
            sharing of queues, as cron(1M) was sharing a queue with
            at(1) and batch(1) (SCR 10984).

          + The interval timer (getitimer(2)) value was off by 10
            milliseconds. (SCR 12760)

          + The content of an mmap'ed file (see mmap(2)), became
            inconsistent if the file was then written via write(2).
            This occurred on systems with the CPU IP4, IP5, IP6,
            IP10, or IP17.

       1.3  Networking

          + The kernel now handles ICMP redirects properly (SCR
            12774).

          + A kernel panic caused by an invalid length argument to
            bind(2) was fixed (SCR 12658).

          + Several bugs in the ethernet driver for the
            4D/35/30/RPC machines were fixed: short packets caused
            a kernel panic, input and output bytes statistics were
            wrong.

          + The snmpd daemon was fixed to return the correct up
            time for the management agent. It also now returns the
            correct number of input and output bytes for all
            interfaces. Also support was added for the IRIS Crimson
            and Express Graphics.

          + On multiprocessor IRIS systems, running out of STREAMS
            interrupt blocks could cause modem sessions to be
            terminated or characters to be dropped from ttyf ports
            when scrolling in xterm.  The number of interrupt
            blocks is now configurable in /usr/sysgen/kernel (the
            NSTRINTR definition).

          + Sendmail would core dump with a null MAILER.

          + Mail should have notified the user when message headers
            were unparsable.

       1.4  X_Window_System

          + The file containing the gamma value could sometimes be
            destroyed causing an inability to log into the system
            via the graphics console (SCR 12582).

          + X arcs were drawn in the wrong place on GTX graphics
            systems.

          + The qcontrol() function was incompatible with the 4D1-
            3.3 release (SCR 12513).

          + The combination of qreset() and dial and button
            peripherals resulted in drawing errors (SCR 12538).

          + After a random number of tries (between 1 and 10) the
            confidence tests for the dial and button box failed
            requiring a reboot to recover.

          + The system would hang when using the Calcomp tablet.

          + XGetImage would not properly read pixels from a window
            when you gave it a planemask of anything but 0xffffffff
            (SCR 12764)

       1.5  System_Manager,_Pandora,_and_Confidence_Tests

          + The Pandora login screen on the Indigo and other
            utilities initialized with the wrong colors due to a
            toolkit error.

          + The ypmake/ypset utilities didn't work in System
            Manager (SCR 12674).

       1.6  WorkSpace

          + The WorkSpace file locking mechanism has been rewritten
            without the lock manager, so that it is no longer
            necessary to run lockd on the remote machine when home
            directories are NFS-mounted.

          + There were occasional visual anomalies when zooming.

          + Fixed a problem when directory views started up
            minimized.

          + Fixed a core dump when more than 15 items were on a
            path.

r9 (PS) and IRIS Font Manager (FM) font names result in a file not
            were specified in the headers of those X font files
            that did not have them.  X font files are stored in
            subdirectories of the directory /usr/lib/X11/fonts.

          + The program mkfontdir creates psfonts.dir files in X
            font directories.  That program was changed in such a
            way that psfonts.dir files now contain entries ford by
            those font files that contain FM font names, not just
            entries for those font files that contain PS font
            names.digo readdisplay() routine failed on the top and
            bottom lines of the screen.
          + Added a prototype declaration for the function fminit
            when __cplusplus is not defined in the include fileat
            fmclient.h (SCR 12578).  Some comment statements that
            caused warning messages to be issued when the compile
            option -fullwarn was used were removed from the include
            file fmclient.h.

       1.9  Support_for_High-Quality_AudioIRIS systems, DID modes
            would not be properly initialized for single buffered
       The soundfiler man pages inadvertently left out of IRIX(SCR
       4.0.1 have been included in IRIX 4.0.3.

       The following bugs have been fixed in libcdaudio:finite
            loop.
          + The trailing comma has been removed from the enum in
            <cdaudio.h> so that it compiles without warnings under
            ANSI C.  A new constant, CDDA_NUMSAMPLES, has been
            added; it defines the number of data samples in a frame
            of digital audio data.

          + CDreadda returned the number of bytes read instead of
            the number of frames read.ideo format resolution
            (NTSC/PAL).
          + CDgetstatus reset the current block number (used as the
            starting address of the next CDreadda) to zero.

          + CDparseframe was using the same delay line for both
            left and right channels when deemphasizing a
            preemphasized audio signal.  This caused crosstalk and
            other artifacts.

          + The examples on the cdaudio(3) man page have been
            corrected.  All libcdaudio man pages now show that it
            is necessary to include <sys/types.h> before
            <cdaudio.h>.

       The following bugs have been fixed in libdataudio.

          + The trailing comma has been removed from the enum in
            <dataudio.h> so that it compiles without warnings under
            ANSI C.  Several new constants have been added that
            define the number of data samples in a frame of digital
            audio data at each sampling frequency. The DTFRAME
            struct has been modified to include the interpolation
            flags that are set by the latest DAT firmware.

          + DTparseframe was using the same delay line for both
            left and right channels when deemphasizing a
            preemphasized audio signal. This caused crosstalk and
            other artifacts.

          + DTparseframe would not play audio data if there were no
            time codes recorded on the tape.  Now it plays all
            audio data unless one of the interpolation flags is
            set.  In that case it zeros audio data in the
            appropriate channel (left, right, or both) before
            returning it.

          + A new function, DTsetdate, has been added to initialize
            a subcode packet, pointed to by the function's
            argument, with the current system date and time.  This
            supersedes DTsetdatepack (though DTsetdatepack is still
            present for compatibility), which created, initialized,
            and returned such a packet. The new function is needed
            because the date and time are recorded every second,
            not once per recording as the author originally
            believed.

       1.10  Window_Shell_(xwsh)

       For this release, only one bug was fixed in xwsh. A core
       dump condition existed when vi was run in xwsh and a special
       sequence of events was enacted. To create the failure
       condition, a selection had to be made and then a vi command
       issued to cause the display to scroll while executing a
       subshell command with vi's :! syntax.  This bug has been
       fixed for the 4D1-4.0.2 and subsequent releases.


       2.  IRIS_Development_Option_(IDO)

       2.1  MOTIF_Development

          + XSendExtensionEvent didn't always set the
            first_valuator field to zero.

          + The Motif text widget could display old information.

          + Xt could corrupt memory on deleting a widget.

       2.2  ANSI_C

          + A problem was found with certain initializer statements
            resulting in a failure to compile (SCR 12617).

          + The cc driver failed to handle -L <dir> (SCR 12556).

          + The C compiler core dumped on certain syntax errors.

          + The C compiler rejected const enum in switch
            controlling expressions.

          + The macros for variable argument functions were fixed
            macros to work for types whose size were less than 4
            bytes (SCR 12603).

          + Lorder did not provide dependencies in case of small
            data (SCR 12593).

          + The ANSI C release notes were missing (SCR 12557).

          + A new -mips2 switch generates faster executing code
            that can be run only on an R4000 system.

       2.3  Development_Tools

          + The function call fscan() failed to read unseparated
            floats correctly (SCR 12594).

          + The value of Char arrays in Fortran didn't print in dbx
            or edge (SCR 12443).

          + The reference to 'end' was changed to the ANSI version
            of the linker-defined name '_end'.

          + Lint core dumped when given two -woffs.

          + There was a minor printf (%f) rounding error when no
            digits had been printed and the first hidden digit was
            between 5 and 6.

          + An assertion failure could occur while using prof to
            analyze a pixie'd executable.

          + In dbx, the first entry statement was an "unknown"
            symbol (SCR 12734).

       2.4  Graphics

          + Gldebug didn't recognize new glcompat modes.

          + Glcompat.autoFork : False didn't work.

       2.5  Audio

          + Reference to sys/types.h was made in the various
            libdataudio man pages.

          + DTsetdatepack date and time printing on recordings was
            made more efficient.

          + The ioctls for MIDI needed to be documented.

          + CDreadda returned the number of bytes instead of the
            number of frames.

          + The cdframe man page didn't match cdaudio.h.

          + The cdaudio man page example was wrong.

          + libdataudio did not handle the new DAT firmware.

          + The soundfiler man pages were incorrect in some cases
            and missing in others.

          + The same delay line was incorrectly used for both the
            left and right audio channels in the deemphasis code in
            both libdataudio and libcdaudio.

          + CDgetstatus incorrectly reset the current disc
            position.


       3.  VideoCreator

          + Revison 1.2 of the VideoCreator software did not
            support the IRIS Indigo properly.  The maintenance
            image of VideoCreator software released with 4.0.3
            contains several fixes that allow you to use the NTSC
            and PAL versions of the SCSI-based VideoCreator
            product.  When you power on the VideoCreator, it does
            not scan convert the 1024 x 768 Indigo video properly
            until you run a program that opens and initializes the
            VideoCreator (for example,
            /usr/video/vc/bin/vcsetmode).

          + A bug that prevented you from installing the
            VideoCreator software properly on the R4000 processor
            has been fixed.

          + The installation script now allows you to attach a
            SCSI-based VideoCreator to alternate SCSI channels on
            systems that feature the additional SCSI controller(s).


       4.  NFS

          + The lock manager did not work with local locks (SCR
            10978).

          + The automounter didn't always look up hostnames in NIS
            hosts.

          + NFS writes with group or world write-only permissions
            were incorrectly handled (SCR 12586).


       5.  C++

          + C++patch dumped core if the library file was not
            present.  It now generates an error message.

          + The delete[] of a null pointer failed.

          + Spurious error messages were issued with direct
            destructor calls.

          + Cfront failed when warnings were enabled.

          + Pure virtual conversions failed.

          + Unnecessary references to vtbl were generated.

          + A failure occurred if using an inline function calling
            "new."

          + Vector new with placement could result in an erroneous
            syntax error.

          + LibC.a exit() did not call __exit_fns.


       6.  Fortran

          + Fixed the string comparison statement so subsets of the
            string "malloc" ("m", "ma", "mal,", "mall," and "mallo)
            did not get misinterpreted as "malloc" and converted to
            mips__nan_malloc by mistake (SCR 12708).

          + Fortran was setting the lang field in the symbol table
            to a random value, resulting in a dbx symbol table
            error (SCR 12621).

          + Fortran put REAL*8 variables on double-word boundary
            instead of single-word boundary for structure.

          + Libblas had a level 3 integer overflow error.

          + Provided record-locking capability over NFS by using
            fcntl(), which works properly with the new lock
            manager.

          + f77 -O2 could make as1 core dump (SCR 12575).

          + F77 didn't handle dummy with same name as intrinsic
            func (SCR 12466).

          + Fixed a regression in 4.0 release when converting
            exponential operation into multiplication, which
            resulted in an incorrect error from fcom.

          + Fixed Fortran so that a full pathname won't be
            generated for each File symbol generated for each
            Fortran common block.  This caused slower compile times
            (SCR 12644).

          + Fortran REAL*4 and REAL*8 provided different results
            (SCR 12671).

          + Fortran implied-do loop with substrings failed (SCR
            12473).

          + Fortran would IOT Trap in the datan2(3F) call (SCR
            12382).

          + sysmp() did not have a Fortran interface (SCR 12387).

          + Fortran %val() coredumped.

          + There was a bug in Fortran line numbers for DATA
            statements and a bug in producing the wrong syntax
            error where there was none when a long VMS style type
            declaration/initialization was compiled with -col120
            (SCR 10674).

          + Fortran's EQUIVALENCE did not work correctly (SCR
            12695).

          + The varargs argmnt(3F) function returns bad value.
            Added -chararg1 option to count character argument as
            one argument instead of two (SCR 12618).

          + A new -mips2 switch generates faster executing code
            that can be run only on an R4000 system.
--------------
In addition...

        1. fix random core dumping caused by "fault at end of page"
        2. fix IP17 to not cause dbx to core dump
        3. fix Elan failure to display stippled line segments
        4. fix r4kpp to fix a binary as the default mode

-- 
Allen Buchinski                                 allenb@csd.sgi.com
Silicon Graphics Computer Systems               415-335-1681
Customer Support Division                       415-961-6502 (FAX)
Newsgroups: comp.sys.sgi