Bug fixes and changes in 4.1bsd

From Computer History Wiki
Jump to: navigation, search

This is the note included with 4.1 BSD


              Bug fixes and changes in 4.1bsd

                        May 10, 1981


                          Bill Joy

              Computer Systems Research Group


                          ABSTRACT

          This document describes briefly  the  changes
     in  the  Berkeley  system  for the VAX between the
     fourth distribution of November 1980 (known origi-
     nally  as  4BSD,  and  hereinafter  referred to as
     4.0bsd) and this, its revision of April 1981.   It
     attempts to be summarize, without going into great
     detail, the changes which have been made.



                    Notable improvements


+    Performance of the system under heavy paging  load  has
     been  substantially  improved  by  correcting a problem
     with placement of  pre-paged  pages.   The  system  now
     pre-pages  more  data,  greatly  benefitting  processes
     which have locality in their behavior.  System degrada-
     tion  due  to  pre-paging has been reduced (even though
     more pre-paging is  done),  by  placing  the  pre-paged
     pages  as  the  bottom of the free-list, rather than in
     the systems global clock replacement loop.

+    Processes which serially  reference  large  amounts  of
     virtual memory may now declare themselves to be sequen-
     tial (see vadvise(2)), causing the paging algorithm  to
     be adjusted to be more appropriate for such  behavior.*
     Processes  which  are known to need only a small amount
     of memory, but which tend to accumulate  large  amounts
     of  memory due to strange page referencing patterns may
     declare a soft limit on the  amount  of  memory  to  be
     used,  see  vlimit(2)  or  do ``limit memoryuse nk'' in
     csh(1).  If the system  needs  memory,  and  there  are
     processes  which  are  over  their declared limits, the
__________________________
* Future versions of the system  will  detect  strongly
sequential  behavior  and adapt themselves accordingly,
so this call will no longer be necessary.




                       July 14, 1981





                           - 2 -


     system tends to take pages from these processes  first.
     By saying that these limits are soft, we mean that on a
     system where physical memory is not  scarce,  processes
     with  limits  can still acquire as much physical memory
     as they require.

+    The system is now compiled from a  description  of  the
     local  machine  which includes information about avail-
     able devices and the maximum number of users to be sup-
     ported  on  the  system.   It is no longer necessary to
     adjust an armful of constants to  re-size  the  system;
     normal  time-sharing  systems  are parameterized from a
     single ``maxusers'' constant.  The system also  adjusts
     the  parameters of the paging subsystem based on avail-
     able memory; it is no longer necessary to adjust  these
     for  machines  with very small or very large amounts of
     available memory.

+    The system now handles multiple  uba's  and  mba's  and
     mixing  of  devices  on mba's.  A number of new devices
     are supported: RK07's and TS-11's  which  come  in  the
     standard  11/750  packages, UNIBUS TM-11 tape emulators
     (e.g. the EMULEX TC-11 with a KENNEDY 9300  transport).
     Line  printer  and  C/A/T  phototypesetter  drivers are
     included in the system, and modem control for the DH-11
     using  the  DM-11  has been integrated and tested.  The
     new RM-80 Winchester drive from DEC is supported.  Not-
     ably  unsupported  are  the 11/750 console casettes.  A
     single  distribution  system  boots  on  all  supported
     hardware  configurations  by  determining the available
     devices and selecting a root device at boot time.

+    The tar program has been changed  to  allow  update  of
     magnetic tape archives, adding to the end of the exist-
     ing tape archive.  This uses  tape  control  facilities
     newly  added  in  this  version  of the system, but the
     created tapes are readable on  all  versions  of  UNIX.
     Since  blocked  tapes are inherently more efficient and
     fully functional, tar  now  creates  blocked  tapes  by
     default.

+    Shell scripts are now potentially executable.   A  file
     which  begins  with  the  characters ``#!'' followed by
     some amount of white space and the name  of  an  inter-
     preter  is  executed directly by the system.  The stan-
     dard version 7 shell,  /bin/sh,  has  been  changed  to
     recognize  a # as a comment character.  It is desirable
     that users change existing shell  script  so  that  the
     first  line of each shell script begins with ``#!'' and
     the name of the proper shell to execute.

+    Two new documents have  been  added  to  Volume  2c:  a
     manual for the crt screen package -lcurses, and a docu-
     ment describing the rogue game.



                       July 14, 1981





                           - 3 -


                      Major bug fixes


+    A number of bugs have been fixed in  the  FORTRAN  com-
     piler  F77;  these  caused some block data routiens and
     main programs to fail to compile.  Other  bugs  related
     to  use of the symbolic debugger with FORTRAN have been
     fixed (see f77 in ``Section 1'' below.)

+    A bug which caused the C compiler to complain ``expres-
     sion  too complicated'' when an expression contained an
     embedded structure assignment has been fixed.

+    A kernel bug which caused approximately 1/8'th of  data
     collected  during program profiling to be lost has been
     corrected.

+    A very confusing bug in the tset manual page  has  been
     corrected: in the example where it uses the setenv com-
     mand it  should  rather  use  the  set  command:  ``set
     noglob;  eval  ...''.  The alternate form does not work
     on a number of terminals.

+   Due to a inconsistency between the 11/780 and the 11/750
    in  the  interpretation  of  the movtuc instruction, all
    binaries from the third distribution  tape  (of  January
    1980)  and  the  fourth  distribution  tape (of November
    1980) will NOT run correctly on the 11/750.  The  4.1bsd
    distribution tape includes a new version of the standard
    i/o  library  which  avoids  use  of  this   troublesome
    instruction,  and it is recommended that all programs be
    recompiled from scratch to use this new library to elim-
    inate non-portable UNIX binaries as soon as possible.

    The problem is that when there appears to  be  a  chance
    that  the  operands  to movtuc will overlap, but they in
    fact do not (because the pattern  string  to  printf  is
    terminated  by  a null), the 11/750 does not execute the
    movtuc as though a shorter string length were  specified
    which  did  not  imply  potential  overlap.   Thus  this
    instruction which is in the inner loop of printf on  the
    4bsd  tape,  and which works fine on an 11/780, malfunc-
    tions on an 11/750 causing strange and awful behavior.

+   (The following change  is  applicable  only  to  systems
    bootstrapped  from  the  4.1bsd  release  tape;  systems
    upgraded  from  4.0bsd  may  or  may  not  include  this
    change.)  The  standard  i/o  library has been made more
    compatible with the PDP-11 version 7 system and now sup-
    ports  concurrent  read  and  write access to files (see
    fopen(3s) for details).  This  caused  a  change  in  an
    internal  data  structure  which  is visible to compiled
    programs through  the  macros  in  ,  and  thus
    necessitates    discarding   of   old   .o   files   and



                       July 14, 1981





                           - 4 -


    recompilation.  Note that this standard i/o library  now
    replaces  the old -lNS library which was in 3bsd but was
    deleted from 4bsd pending the  inclusion  of  read-write
    capability in stdio.

                         Section 1



adb        A bug which prevented programs loaded with the -N
           loader option from having breakpoints set on them
           has been fixed.  A bug which prevented backtraces
           of  programs which are stopped at interrupt level
           (after a signal) has been fixed by  teaching  adb
           how  to  step  across  the interrupt stack frame.
           The system now makes available and the $? command
           in  adb interprets more precise codes when SIGILL
           and SIGFPE exceptions occur.  Thus if you  divide
           by  zero,  you  can  find  out that this was what
           caused a floating point exception.  A  bug  which
           prevented  format  repetition counts (e.g. the 10
           in ``0/10X'') from working has been fixed.  A bug
           related  to adb has been fixed that prevented any
           sensible traceback  after  a  FORTRAN-77  runtime
           error which trapped an exception or fault (e.g. a
           floating point divide by 0).  A bug which  caused
           the  maps to be set improperly when debugging the
           kernel on a crash dump has been fixed.

           New commands have been added to adb to facilitate
           writing  adb procedures stored in files:  see the
           descriptions of $<<, the register <9, and  the  #
           operator in the revised adb manual page.

awk        Has moved from /usr/bin to  /bin  because  it  is
           needed during bootstrap procedures.

bc         Now takes the new C syntax operators: ``=op''  as
           well  as  (for  history's  sake)  the  old syntax
           ``op=''.

calendar   Several bugs have been fixed in the internals  of
           the calendar program.  In addition it is now pos-
           sible to have  a  calendar  entry  consisting  of
           merely  a date (with no month specified) and have
           this entry occur each month.

cc         A bug has been fixed in  the  C  optimizer  which
           caused  strange  things to happen when long vari-
           able names were used.  The size of  the  internal
           ``dimension''  table  has been increased to allow
           more structure fields to be declared.  A  problem
           which  caused  the compiler to print ``expression
           causes compiler loop'' when structure  assignment



                       July 14, 1981





                           - 5 -


           was  embedded  in  an expression context has been
           fixed.  A bug in the code generator tables  which
           affected certain FORTRAN constructs has also been
           fixed.

checknr    Es versteht -mm.

csh        A cosmetic bug which  prevented  the  distributed
           source  from  compiling  has  been  fixed.  A bug
           which caused argument lists including the strings
           ``{''  or  ``{}''  to  sometimes fail saying ``No
           match'' has been fixed.  A  bug  which  caused  a
           strange  state  to  result  when a command of the
           form ``(a; b; c)'' was stopped from the  keyboard
           has been fixed.  The shell has been fixed so that
           it prefers to make stopped jobs the  new  current
           jobs  after  the current job has terminated.  The
           construct ``${TERM}'' no longer yields  an  extra
           ``}''  when  the  variable  expanded  is from the
           environment.

           Previously undocumented was  the  shell  variable
           histchars;  it  can be set to two characters, and
           the first is then a replacement for the normal  !
           history  character and the second for the ^ quick
           history substitution character.  Thus after ``set
           histchars=,;''  the  command  ``,,''  repeats the
           previous command, as ``!!'' would  normally  have
           done.

ctags      Now takes an option -v to produce output suitable
           for input to vgrind(1).

cu         Now  honors  uucp's  locking  protocol  for   the
           dialout lines.  Several bugs relating to internal
           buffer overruns have been fixed.   An  option  -b
           has been added which causes the BREAK key to gen-
           erate breaks (by turning  input  null  characters
           into breaks sent over the line).

delivermail
           Some bugs which caused strange loops when aliases
           were self-referential have been fixed.

diff       Some bugs related to directory diffs when the  -h
           option  was  used have been fixed; previously the
           -h option was non-functional.

dump       An obnoxious bug in the  dump  program  where  it
           would  wrongly  suggest  that  further dump tapes
           were needed after a multi-tape dump  had  already
           completed  has  been  fixed.  The dump program no
           longer attempts to time tape rewinds itself,  but
           uses  a  mechanism  which  does not depend on the



                       July 14, 1981





                           - 6 -


           speed of the  tape  drive  to  determine  when  a
           rewind is complete.

error      Has been taught about the error  message  formats
           of the PDP-11 C compiler.

expand     A internal error check which  was  incorrect  has
           been fixed.

f77        Has had a bug fixed which caused some block  data
           subroutines and main programs to not compile (the
           sympton was a diagnostic of the form ``Undefined:
           LWM%d''.   A  number of minor bugs which combined
           to make sdb function poorly with  f77  have  been
           fixed.   The  result  of  these bugs were that if
           file names were  longer  than  6  characters  sdb
           could  not read the symbol table of the resulting
           FORTRAN binary.

           An i/o library bug which caused  numbers  of  the
           form  ``-1.2''  to  convert  improperly  in list-
           directed input (reading as ``-0.8'',  taking  the
           mantissa as positive) has been fixed.

ld         If you are using the -r  flag  and  there  remain
           undefined  symbols  you  no longer get a spurious
           error return.  Now  respects  modes  of  existing
           files and your file-creation mask more.

lisp       The functions +, /, -, *, 1+, 1- now expect  fix-
           num  arguments,  for interpreted functons as well
           as compiled ones.  The source  for  the  VMS  and
           UNIX versions of lisp have been combined and syn-
           chronized.   The  construction  of   very   large
           integers  has  been altered to use regular dotted
           pairs in a non-standard way, so that  fewer  gar-
           bage  collections  will  occur.  (It is no longer
           safe to use ``car'' and ``cdr'' to  disect  large
           integers).   Mixed-mode  arithmetic has been made
           faster.  There is a new  compiler  option  (liszt
           -r)  which allows you to create small lisp appli-
           cation programs  (with  a  mechanism  other  than
           ``dumplisp'',  which  tends  to create very large
           binaries).  When the result of such a compilation
           is  executed directly, it execs /usr/ucb/lisp and
           then fast loads the file you  asked  to  be  exe-
           cuted.   A  new  flag  $ldprint has been added to
           control the printing of fasl/load messages.   New
           functions  (purecopy),  (getdata), (putdata), and
           (removeaddress) have been  added.   A  number  of
           minor bugs have been fixed.






                       July 14, 1981





                           - 7 -


lpr        Has been modified to work on both DECWRITER  type
           devices at 1200 baud masquerading as printers and
           also on real line printers.  The  queueing  algo-
           rithm   has   been   made  first-come-first-serve
           (replacing the old random job  first  algorithm),
           and a line printer driver is now available in the
           standard distributed system.

ls         A bug has been  fixed  which  caused  essentially
           random numbers to be printed for the size of spe-
           cial files.  The size now prints as 0.

make       A spelling error has been  fixed  which  had  the
           variable   EC  initialized  to  f77  rather  than
           FC=f77.

man        A bug which caused it to core dump when reformat-
           ting a manual page whose source macros were inac-
           cessible has been fixed.

mt         Is a new command which provides  easy  access  to
           operations  such  as forward and backward spacing
           of files and records on magnetic tape.

mv         Has been changed to have  a  option  ``-''  which
           means  that  all the following arguments are file
           names.  A bug has been fixed which caused strange
           behaviour  when  the -i option was used on direc-
           tories.  A bug which prevented renaming  of  sub-
           directories  to which you had no write access has
           been fixed.

oldcsh     Which was non-functional due to  a  change  in  a
           internal  library  interface  which  it had taken
           advantage of has been fixed to work.

od         New options O, X, and D print 32 bit integers  in
           octal  hex  and  decimal  format; an option w has
           been added to cause 132 column output rather than
           the default 80 column oriented output.

pc/pi      A number of bugs in the sdb symbol table produced
           have been fixed.  Structured types may now exceed
           65k bytes in size, but in that case  may  not  be
           passed  by  value  nor assigned by simple assign-
           ment.  Structured  types  are  properly  returned
           from  recursive functions.  Minor bugs in passing
           function parameters have been  fixed,  and  there
           still  exist  some more minor bugs here.  Runtime
           tests can be now be enabled or disabled on a  per
           routine basis.  Runtime checks are now done prop-
           erly on builtin functions.   Warnings  (or  stan-
           dards violations) are now produced for extensions
           to the language.  Some inconsistencies in dealing



                       July 14, 1981





                           - 8 -


           with running out of memory have been fixed.

           Some bugs are known: invoking  a  formal  routine
           from  inside a formal invocation of the same rou-
           tine  will  mess  up.   In   pc   only:   linking
           seperately  compiled  modules from other than the
           current directory only works  if  you  give  full
           path  names  (or the same relative paths) for the
           compilation and the linking.

           Some changes are planned soon: for-loop variables
           and with pointers will be allocated to registers.
           The formal routine syntax is currently as in Jen-
           sen  and  Wirth,  but will soon be changed to the
           the syntax of the proposed  standards,  in  which
           parameters  to  formals  must  be  given.   It is
           planned that pc will soon do  compile  time  con-
           stant folding.

pmerge     Is a new program which can convert  large  Pascal
           programs back into a single file, eliminating the
           header files and separate source  files  normally
           used for separate compilation.

prof       A bug which caused prof  to  loop  when  a  file-
           static  function  was profiled has been fixed.  A
           bug in the kernel which  caused  the  results  of
           prof to be inaccurate has also been fixed.

ps         Has been changed to work with the new kernel  and
           is  no longer dependent on system sizing; thus it
           is no longer necessary to recompile ps  when  the
           system  tables  are  made larger.  A bug in the s
           option which caused the computed stack size to be
           a  constant  512  bytes too large has been fixed.
           The ``STAT'' field now shows ``>'' in the  second
           position for programs which are using more memory
           than their memoryuse limit (see  vlimit(2)).   It
           also  shows  ``S''  in  the  fourth  position for
           processes which have declared  themselves  to  be
           strongly  sequential (see vadvise(2)).  Under the
           v option, the SWRSS field has been replaced by  a
           new field ``LIM'' which shows the limit on memor-
           yuse if there is a limit, or xx if there is not.

px         Is now written in C, is much more  portable,  and
           shares  the runtime library used by the compiler.
           It is, unfortunately, somewhat slower now.

ranlib     No longer considers it  a  fatal  error  that  an
           archive member defines no symbols.






                       July 14, 1981





                           - 9 -


reset      Has been changed to invoke the command

                tset -Q -I

           so that all terminal modes will be reset.

rm         Now has a - option to indicate that all the  fol-
           lowing  parameters  are  to  be  treated  as file
           names.  It can be used when file names begin with
           ``-''.

rmdir      Now works correctly when arguments end in one  or
           more ``/'' characters.

sdb        Has  been  fixed  to  be  able   to   deal   with
           ``interrupt-stack-frames'',  so that it is possi-
           ble to set breakpoints on and get backtraces from
           routines  called  while  a  signal  is being pro-
           cessed.  Now handles binaries which are mode 0407
           (resulting from ``ld -N'') properly.

sh         Has been changed so that ``#'' begins a  comment.
           Shell  scripts  to  be executed by /bin/sh should
           begin ``#! /bin/sh'' on the first line.

tar        Now defaults  to  blocked  tape  and  can  update
           blocked  tapes (finally!).  When reading tape tar
           defaults to the raw tape and figures out what  is
           going  on with blocksize so it need not be speci-
           fied.  Thus the only  commands  which  should  be
           needed are the simple ``tar t'', ``tar c'', ``tar
           u'' and ``tar x''.

uusend     Now uses the -r option of uux to prevent present-
           ing extreme load to the connected system.

vmstat     Has been changed  so  that  the  system's  device
           names  are  printed for the disks rather than D0,
           D1, D2, D3.  The old  format  output  of  the  -i
           option is no longer available.

           The fields related to paging activity are now all
           given  in  pages (of 1024 bytes).  In particular,
           the fields ``pi''  and  ``po''  which  previously
           showed  the  number  of pagein and pageout events
           now show pages, and ``sr'' which previously  gave
           the clock scan rate in revolutions-per-minute now
           gives the scan rate in pages scanned per  second.
           To provide the extra space needed to present this
           information, the swap in/out  information,  which
           was  only  marginally  interesting,  is no longer
           printed.





                       July 14, 1981





                           - 10 -


w          Has been modified so that it no longer  needs  to
           be  recompiled  when  the kernel tables change in
           size.

wall       Now checks that the message is not too  long  for
           its internal buffer, rather than just overrunning
           the buffer.  It handles running out of  processes
           by  pausing,  so  it  is  possible to use it when
           there are more than 25 users logged  in  and  you
           are  not  the  super-user.   It  also  gives  the
           machine name you are on  in  the  broadcast  mes-
           sages.

who        ``Who am I'' now prints your  machine  and  login
           name  (the  first word of its output) in a format
           suitable for use with uucp.

write      Now checks that you do not have write  permission
           disabled  and doesn't let you write to someone if
           they can't write back.

                         Section 2.


intro      Now correctly reflects that argument lists may be
           upto 10240 characters long.

exec       Has been changed so that if a file being executed
           begins  with the magic characters #!, the rest of
           the line is understood  to  be  the  name  of  an
           interpreter  for  the  executed file.  Previously
           (and in fact still) the shell did  much  of  this
           job;  it  automatically executed itself on a text
           file with executable mode when  the  text  file's
           name  was typed as a command.  Putting the facil-
           ity into the system gives the following benefits.

           1)   It makes shell scripts more like  real  exe-
                cutable  files, because they can be the sub-
                ject of 'exec.'

           2)   If you do a 'ps' while  such  a  command  is
                running,  its  real  name appears instead of
                'sh'.  Likewise, accounting is done  on  the
                basis of the real name.

           3)   Shell scripts can be set-user-ID.

           4)   It  is  simpler  to  have  alternate  shells
                available; e.g. if you like the Berkeley csh
                there is no question about which shell is to
                interpret a file.





                       July 14, 1981





                           - 11 -


           5)   It will allow other interpreters to  fit  in
                more smoothly.

           To take advantage of this wonderful  opportunity,
           put

                   #! /bin/sh


           at the left margin of  the  first  line  of  your
           shell  scripts.   Blanks  after  ! are OK.  Use a
           complete pathname (no search is  done).   At  the
           moment the whole line is restricted to 32 charac-
           ters.  A single argument may be specified for the
           interpreter, thus:

                   #! /bin/csh  -f


           is very useful, avoiding reading .cshrc which  is
           often not wanted.

kill       Has been changed so that when  broadcasting  sig-
           nals  universally  the  signal being broadcast is
           not sent to the broadcaster.  This is used by the
           halt(8), shutdown(8), and reboot(8) commands.

reboot     Has been changed to reflect the now more  limited
           number  of  option  flags available to the system
           call due to the nature of the  console  interface
           on the VAX 11/750.

sigsys     Reflects the fact that the system now  passes  in
           to  a signal handler an indication of what excep-
           tion really happened when a SIGFPE or  SIGILL  is
           generated.   The call interface at the point of a
           signal handler call is now specified.


                         Section 3



curses     A large number of  bug  fixes  have  been  incor-
           porated,  and  the documentation has been greatly
           improved.  The library is  now  much  more  solid
           than that originally distributed.

fopen      Reflects the new open options which allow  simul-
           taneous read-write to files; these extensions are
           being incorporated to  bring  compatibility  with
           the standard version 7 PDP-11 UNIX and to replace
           the (now defunct) -lNS.




                       July 14, 1981





                           - 12 -


printf     A bug  in  the  documentation  which  incorrectly
           stated  that a %c format would not put out a null
           character has been fixed.

                         Section 4


     The system now supports a number of new devices and has
capability for detecting the device's presence and interrupt
vectors at boot time.  The system also has capability to  do
device location at boot time so that a system description as
supplied  to  config(8)  can  take  advantage  of  available
hardware redundancy.

     Each configurable device driver  in  this  section  now
includes  a SYNOPSIS giving sample lines to be included in a
system configuration.  Drivers also indicate the error  mes-
sages which they produce and describe each error.


ct         A driver for a C/A/T phototypesetter interface.

dh         Now includes  handling  of  dm-11  modem  control
           hardware.   Optional  flags  to the configuration
           program can also be given to supply hardware car-
           rier easily for lines where wiring is inadequate.

hp         Includes rm80 support.

lp         Drives  standard  line  printers,  and  has  been
           improved to cut the interrupt load by a factor of
           20.

mt         Describes  the  standard  tape  drive  interface,
           which  now  includes  ioctl  operations  for  raw
           magtape allowing such standard operations as for-
           ward and backward spacing over files and records,
           writing of end-of-file marks, rewinds,  rewinding
           and offlining, and sensing of tape status.  These
           operations are used by the  mt(1)  program  which
           can  be used to easily manipulate tape files, and
           by the tar(1) program to allow updates to blocked
           tapes.

tm         Supports the UNIBUS  TM/11  emulating  tape  con-
           trollers  (e.g.  EMULEX TC-11 with a KENNEDY 9300
           drive).

ts         Supports the UNIBUS TS/11 tape  drive  and  tran-
           sport.

tty        Now provides a LDECCTLQ option  which  causes  ^S
           and  ^Q to function as necessary for the VT100 to
           work properly.



                       July 14, 1981





                           - 13 -


up         A driver for a EMULEX SC-11 or SC-21 UNIBUS  disk
           controller  with storage module (e.g. Ampex 9300)
           disk drives.

va         A varian raster plotter.

                         Section 5

                        No changes.

                         Section 6



chase      Is a game where robots try to eat you.

hangman    Is now screen oriented.

rain       Drops keep falling on my head.

rogue      Is a new and very popular  screen-oriented  game,
           see  rogue(6)  or  ``A  Guide  to the Dungeons of
           Doom.''

worm       Is a game where you see how long you can get  the
           worm to grow.

worms      Is an amusement where the worms chase each  other
           around the screen.

                         Section 7

                        No changes.

                         Section 8

     Major changes affecting system operations include:

*    The system is configured from a single per-cpu specifi-
     cation  file which includes all locally relevant infor-
     mation: desired devices, size of the maximum user load,
     timezone  information,  etc.   The system determines at
     boot time the size of  the  file  system  buffer  cache
     based  on  the  amount of physical memory available and
     sizes the system data structures based on the  specifi-
     cation  of the maximum number of active users; it is no
     longer necessary to juggle an armful  of  constants  to
     enlarge  the system.  The sizes of system tables are no
     longer compiled into programs such as ps and w.

*    System error log information  is  saved  across  system
     crashes  provided no power failure occurs, as the error
     log is kept in-core in the last 1024 bytes  of  memory.
     Error messages to the console are in a standard format,



                       July 14, 1981





                           - 14 -


     of the form:
          device: message

     Messages have error registers decoded as bits, so  that
     they  are  readable,  and no-longer refer to devices by
     their major/minor device numbers, rather  using  device
     names.  Error messages about file system problems (dev-
     ice full, out of inodes, etc) are referred to with  the
     mounted  file  system  name,  and  a  message  is  sent
     directly to a user if his/her process writes to a  file
     system  when it is full.  All error diagnostics printed
     by drivers are documented in section 4 of the manual.

*    DEC standard bad block forwarding is supported  on  all
     DEC  disks  except  the RP06; the code which implements
     this can be easily  moved  into  the  drivers  for  the
     UNIBUS storage module disks; this is planned.

*    Core dumps are saved after system crashes automatically
     as  the  system writes a core image to a portion of the
     swap area from which it is recovered after reboot.  The
     system  then transfers these core images to a specified
     UNIX directory, saving also the version of  the  system
     associated  with  the crash.  The system also maintains
     an error log  /usr/adm/shutdownlog  which  records  all
     system  crashes  and reboots with the information about
     the causes.



analyze    Now has an option -u to print page numbers of the
           u.  areas.  A bug which prevented the distributed
           analyze from working has been fixed.

bad144     Is a  new  program  which  prints  out  the  DEC-
           standard  bad  block  information  for a disk, or
           puts it back if it gets clobbered.  The  name  of
           the  program comes from the fact that the program
           deals with ``DEC standard 144'' format.

badsect    Creates a file in a file system which contains  a
           specified  disk sector of that file system.  This
           is a primitive way of dealing with  bad  sectors,
           but  works  on drivers which don't (yet) have bad
           block forwarding according to the standard.

getty      No longer prints ``Virtual'' in front of the sys-
           tem  identification, since there are no swap sys-
           tems in sight anymore.

halt       Now properly shuts down the  system;  see  reboot
           below for details.





                       July 14, 1981





                           - 15 -


icheck     Now properly sets the tfree field in  the  super-
           block.

init       Now interacts with halt, reboot and  shutdown  to
           bring  about orderly system shutdowns.  No longer
           writes entries in  the  /usr/adm/wtmp  accounting
           file  when  a  getty  process dies without a user
           logging in on a terminal.  Prints a warning  mes-
           sage  (on  the  console) if a terminal exists, is
           enabled, but the open returns an error, and waits
           for   terminal  to  be  openable,  checking  each
           minute, to prevent thrashing in this case.

last       Now distinguishes between  system  shutdowns  and
           system crashes.

lastcomm   A bug causing  a  core  dump  if  user  id's  not
           present in the password file were encountered has
           been fixed.

login      Now interacts with the shutdown command to forbid
           logins  (except  by the super-user) in the last 5
           minutes before a shutdown (detected by the  pres-
           ence  of  the  file /etc/nologin, which also con-
           tains a message about why the system is  shutting
           down  which  is presented to the rejected users.)
           Implements a notion of ``secure  terminals'';  if
           the  file  /etc/securetty  exists, then it should
           contain a list of the secure terminals where root
           is  allowed  to  login.   If  this  file does not
           exist, then root can log in anywhere, as  before.
           If  a  user tries to login but can't get to their
           home directory they are left in the  root  direc-
           tory and warned, so that they have some chance to
           send mail about or fix  the  problem  themselves.
           If  a  file  .hushlogin  exists  in  a users home
           directory the the message of the  day  and  other
           such  information  designed  for human users will
           not be printed at login time.  This  is  specifi-
           cally designed for the user uucp which is another
           computer and just  ignores  such  stuff  anyways.
           Finally a bug has been fixed which cause login to
           core  dump  if  there  were  tabs  in  the   file
           /etc/ttytype.

mkfs       Now works properly when given a  proto  argument;
           previously  it  complained because it didn't know
           that the format of the file  /usr/mdec/uboot  had
           been changed.

pstat      Has new flags -m and -g which interpret the  mul-
           tiplexor data structures.





                       July 14, 1981





                           - 16 -


reboot     Now shuts the system down cleanly,  stopping  all
           system activity before initiating the reboot pro-
           cedure.  Normally, however, the new shutdown com-
           mand  is  used to take the system down, notifying
           the users of the impending downtime.  The options
           -s  and -a options to reboot are no longer avail-
           able, as it will not be possible to provide  them
           on  all  VAX  cpu's  due  to  the way the console
           interface works.  Instead, you can halt the  pro-
           cessor  using  halt  which puts the system into a
           tight loop, and then perform the  desired  reboot
           sequence  manually at the console.  This works on
           both 11/750 and 11/780 processors.

renice     Has been modified for the new kernel  and  is  no
           longer  dependent on system configuration parame-
           ters; it no longer needs to  be  recompiled  when
           system table sizes change.

restor     Now properly handles the case  where  dump  files
           are  contained  in dump tapes; previously the end
           of the embedded dump  would  confuse  restor  and
           cause  the rest of the dump tape to be inaccessi-
           ble.

sa         Now correctly handles an arbitrary number of com-
           mands and users.  Two new options have been added
           -v and -f giving  it  a  googol+2  options.   See
           sa(8) for details.

savecore   Is a new program which runs  after  a  reboot  to
           save  check to see if the system had crashed and,
           if it had, to save any core image which was  suc-
           cessfully   written  to  the  paging  area.   See
           savecore(8) for a full description.

shutdown   Is a new command which shuts the system down at a
           specified  time.  It broadcasts messages to users
           warning them as the downtime approaches,  records
           the  reason  for  the  reboot  in a log file, and
           cooperates with init in a cleanly shutdown  (e.g.
           during  the  last  2 minutes of system operation,
           users attempting to log in are told that the sys-
           tem is going down and the reason for the shutdown
           but not allowed to log in.)












                       July 14, 1981