DataMuseum.dk

Presents historical artifacts from the history of:

Rational R1000/400

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Rational R1000/400

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦d84b6ca67⟧ TextFile

    Length: 23435 (0x5b8b)
    Types: TextFile
    Notes: R1k Text-file segment

Derivation

└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
    └─ ⟦5a81ac88f⟧ »Space Info Vol 1« 
        └─⟦f923cd6d9⟧ 
            └─⟦this⟧ 

TextFile

         


                                Known Problems

       This report outlines some known bugs in the D_10_20_0 release of
       the Environment; workarounds are suggested where these are known.
       Rational recommends that each system user examine this list
       before using the newly installed Environment.  Note especially
       the first problem described in the Editor section, which may
       result in loss of meaningful data.


       1.  Switches

       *  With the session switch Notify_Warnings set True, compiler
          system warnings result in "Semantic Errors" when a semanticize
          is done, but a promote works fine.

       *  If you execute Switches.Associate with the default parameters
          but the cursor is not in a selection containing a switch file,
          then a directory object named "<selection>" will be created.
          Many environment operations on this object result in errors.
          The object may be selected and deleted (using Object-D).


       2.  Debugger

       *  There is a problem caused by the interaction of
          Debug.History_Display and the Debug.Freeze_Tasks switch.  The
          History_Display command attempts to stop all tasks, displays
          history, and then restarts them.  It fails to recognize that
          tasks may be stopped because of the Freeze_Task switch; such
          tasks will be restarted by the History_Display command.  Tasks
          stopped explicitly with Debug.Stop or Debug.Hold will not be
          restarted; this means that issuing Debug.Stop ("all") before
          Debug.History_Display should avoid this problem.  When the
          Freeze_Tasks switch is off, the problem does not occur.

       *  The command Debug.Reset_Defaults will start a debugger if your
          session never had one.  However, if your session had a
          debugger and you killed it, a new one will not be started.


       3.  Archive

       *  If you use package Archive to restore an Ada unit to a nested
          directory within a frozen world, the operation does not
          unfreeze the world; a result is that the insertion of links
          for the Ada unit fails, leaving the unit as a nonterminal in
          the directory. This happens because a link to the object
          cannot be inserted in the enclosing world.  To correct this
          problem, you should unfreeze the world, promote the
          nonterminal unit, and refreeze the world.

       *  Archive requires that controlled objects are already checked
          out in order to restore them.  An attempt to Archive.Restore
          an object that is controlled but not checked out will fail.

\f

         


          In this situation, you should manually check out the objects,
          then retry the restore specifying the missing units.

       *  Occasionally, an Archive.Restore with the Remake option
          specified will raise Storage_Error (Job_Page_Limit) for
          seemingly random units.  To avoid this situation, Rational
          recommends that the Job_Page_Limit is raised from its default
          of 8_000 pages.  You may either set the session switch, or use
          (for example):

                  System_Utilities.Set_Page_Limit (16_000);

          in the job that does the restore or in the command window with
          the restore command.

       *  Load_Procs cannot be saved with Archive.Save or copied with
          Archive.Copy unless they are in the coded state.

       *  It is not possible to copy or restore a secondary view from a
          D_10_20_0 system to a primary subsystem on a system with an
          earlier release of the Environment, because the format of the
          compatibility database (CDB) will be incorrect.  If you do
          this, you will need to destroy the CDB on the primary, demote
          all units in all views of the primary to Installed, and
          recompile.  Copying to a secondary subsystem or view on a
          system with an earlier release will work, but the secondary
          must not be made a primary before the system is upgraded to
          D_10_20_0.

       *  If you Archive.Copy or Archive.Restore a unit body without its
          spec, you will see an error message implying that the unit
          could not be restored.  This message may be ignored; the unit
          is properly restored.  The count of restored units will not
          include these unit body(s) (for example, if a single unit body
          is copied or restored, the message will be "No units
          restored/copied").

       *  If Archive.Copy or Archive.Restore operations are interrupted
          -- by exception, aborting a job, or a system crash -- objects
          may be left with incorrect ACLs or link packs.  Repeating the
          operation will not fix the damage because information about
          the first attempt will have been lost.

       *  If an Ada unit which was imported into a code view is
          destroyed, then saving and restoring that code view will
          produce a view in which code cannot be executed or used to
          code main procedures.  This happens because the string name of
          the destroyed imported unit is recorded incorrectly in the
          code view.


       4.  CMVC

       *  If you use Cmvc.Accept_Changes for a unit in a join set for
          which another member is checked out, CMVC will erroneously

\f

         


          report that the unit you specify (or the unit in the view you
          specify) is checked out, instead of indicating the joined unit
          that is actually checked out.  It will correctly accept
          changes from the version most recently checked in.  The
          warning is misleading.

       *  If you spawn a set of views that includes load views with
          cross-imported spec views, CMVC will build a set of views to
          import into the new views which includes the working views
          themselves.  It will then issue a warning:

              !!! A load view
          (!REGRESSION.RELOCATION.DATA.DEPENDENT_SUBSYSTEMS.SPEC_LOAD.
              ... CROSSED_IMPORTS.RIGHT.RELOC1_WORKING) cannot be
          imported.
              !!! A load view
          (!REGRESSION.RELOCATION.DATA.DEPENDENT_SUBSYSTEMS.SPEC_LOAD.
              ... CROSSED_IMPORTS.LEFT.RELOC1_WORKING) cannot be
          imported.

          The operation completes correctly.  The warning may be
          ignored.

       *  Consider a (working or released) view containing a main
          procedure and a load_proc loaded from that main, and suppose
          the main procedure with's other units in that view.  Spawning
          a new view from that view would leave the load_proc in the new
          view in the installed state, and uncodable. This happens
          because the with'ed units end up in the Installed state in the
          new view and their code segments are deleted.  Such a
          load_proc cannot remain in the coded state.  The load_proc
          must be destroyed and reloaded after the corresponding main
          procedure has been coded.  Rational does not recommend placing
          load_procs in load views unless they depend only on universe
          specs.

       *  CMVC currently supports only a single switch file:
          <view_name>.State.Compiler_Switches.  Having switch files in
          other directories can cause copies of that view to be
          malformed, resulting in compilation failures without warning
          to the user.

       *  A simple model name is resolved in !Model, not in the current
          context as documented.  A fully qualified pathname works
          correctly.

       *  During an Accept_Changes operation with the goal state Source,
          if destination objects are specified which are deleted during
          the operation, the operation fails and reports VERSION_ERROR.
          For example, if a non-R1000 target view is specified as the
          destination then CMVC will examine all objects in the view --
          including associated files such as <Obj>, <List>, etc.
          Because these files may be deleted when their parent object is
          updated, the Accept_Changes operation fails when checking for
          those files.  The workaround is to be explicit about which

\f

         


          objects should be examined.  This can be accomplished by using
          the destination "?'c(ada)" rather than the name of the view.
          This problem only occurs if the goal state is Source.


       5.  Access List

       *  The access list for !Machine.Switch_Definitions must include
          Network_Public=>RW.  If any user does not have write access to
          this file, various Environment facilities will not work for
          that user.  Check_Universe_Acls has been updated to check
          this.

       *  It is the system manager's responsibility to monitor Group Id
          usage and run ACL compaction when the number of these gets
          low.  If the system manager does not do this, the machine will
          crash when it runs out of group ids.  To determine where you
          are, create a group, say "foo", then run Show_Groups; look at
          the id number next to "foo".  The highest number is 1023.  To
          reclaim used group id numbers, run
          Daemon.Set_Access_List_Compaction and the reclamation will be
          done the next time the overnight daemons run.  This operation
          is described in the Environment reference manual, on pages
          SMU-35 and SMU-61.


       6.  Editor

       *  RUNNING Library.Reformat_Image OVER AN ADA UNIT IN THE
          ARCHIVED STATE MAY CAUSE THE UNIT TO BE LOST, AND REPLACED BY
          AN [ERROR] PROMPT.  Library.Reformat_Image SHOULD ONLY BE RUN
          ON UNITS IN THE SOURCE, INSTALLED OR CODED STATE.

       *  Any comment line that has a sentence-ending character ('.',
          '?', or '!') that is not followed by at least two spaces will
          cause the Ada comment symbols from the following line to be
          run in with the text.

       *  Under certain circumstances, editing an insertion point can
          result in a [comp_unit] prompt, rather than a prompt for an
          Ada statement ([statement] or [alternative]).  This happens
          when an insertion point is opened (with Object.'I') and then
          the associated directory object (an object with a name like
          _Ada_1) is manually deleted (e.g., selected and deleted with
          Object.'D').  After this, if you demote the parent unit to
          source, repromote it to installed, and select and edit the
          prompt in the parent Ada unit, you will get a [comp_unit]
          prompt in the minor window, with which you can do nothing.
          Destroying the insertion's associated directory object can
          lead to another erroneous situation, where asking for the
          definitions of two different insertion points in an Ada unit
          leads to the same associated directory object.  The workaround
          for these situations is to demote the parent Ada unit to
          Compilation.Archived, and repromote it.


\f

         


       *  There is a problem in the pretty printer that causes line
          counts to be corrupted, resulting in a message that includes
          the phrase "brute force reparsing". No data is lost.  This
          problem is only encountered when alignment is enabled and a
          number of other conditions are true.

       *  If you execute Show_Usage, and a window for an object in the
          Show_Usage menu is already up, the display shows no underlines
          when the definition key takes you to the object.  If you
          remove the window with Object-G, then press definition in the
          Show_Usage window again, the underlines appear.

       *  If you open an insertion point in a library, type in only
          comments over the prompt, then press the Format key, all
          contents of the window will be lost.  Nothing is lost if there
          is something other than comments in the insertion point (a
          statement, declaration, or the [comp_unit] prompt).  To work
          around this bug, enter comments in such a way that you do not
          overwrite the [comp_unit] prompt.  This bug only affects
          insertions into a library, not insertions into an Ada unit.

       *  If an asynchronous line is enabled for login and it is
          receiving invalid characters (e.g., noise on the line), the
          system may report overruns and problems getting input.  The
          overrun errors are the key to identifying this as an invalid
          input problem.  The error log will contain messages indicating
          which line is overrunning.  Unfortunately, handling this
          condition consumes much of the processor.

       *  Abandoning a CMVC Editor window (e.g., from the window editor
          by selecting the entry and typing Object-D, or by typing
          Object-G from the CMVC Editor window itself) will seem to be
          successful.  However, when you subsequently log out, your
          session will hang for several minutes, and then a
          Nonexistent_Page_Error will be reported on the operator's
          console. In this situation, several temporary data heaps are
          not deleted; they will remain on disk until after the next
          boot of the system and subsequent running of the disk cleaner.
          There is no workaround.

       *  When you execute Operator.Set_Password_Policy, you should
          specify Change_Deadline to be something other than
          Operator.Days'last.  Otherwise, you will see the following
          error message:

          INTERNAL ERROR. UNEXPECTED EXCEPTION DURING LOGIN

          The Warning and Deadline dates actually expire at midnight
          after the dates reported by Operator.Show_Password_Policy.
          Thus, the reported date is the last full day before a warning
          will be issued after each login, or the last day before the
          user will be forced to change his password (respectively).




\f

         


       7.  Force_Logoff and Logoff_On_Disconnect

       *  When Commit_Buffers is set to True for Operator.Force_Logoff,
          the system tries to commit all modified buffers before logging
          the user off. If it is unsuccessful at committing all of the
          session's buffers after some period of time, it gives up and
          isssues a message saying it couldn't commit the buffers.
          Although some of its buffers have been committed, the session
          is left unmodified and usable.  In D_10_20_0, such a failure
          will also raise Profile.Error, if the Response profile
          includes Raise_Error or Propagate.

       *  If Logoff_On_Disconnect is specified for a line and a
          disconnect occurs, Force_Logoff with Commit_Buffers => True is
          done. If this fails to commit buffers, Force_Logoff is done
          without commiting buffers because, in such cases, the current
          session must be cleared from the line.

       *  The system might not be able to commit buffers during times of
          heavy system load, or if the buffer is a large Ada unit which
          has not been formatted for a time.  By frequently formatting
          Ada images, you can increase the chances that Force_Logoff
          will successfully save all buffers.

       *  Programmatically, if Force_Logoff fails to commit buffers,
          trying it again after a short delay may succeed in committing
          some (if not all) of the remaining buffers and logging the
          session off. If three attempts are all unsuccessful, then the
          session has probably failed in some way, and the attempts to
          commit buffers should be abandoned.


       8.  Compiler

       *  For an incomplete type declared in a package spec, completing
          this type in the package body as an access type to an
          incomplete type will result in an exception being raised
          during code generation.  There are two ways to work around
          this bug.  The incomplete type may be completed in the spec as
          an access type to an incomplete type, with the target type
          completed in the body as something other than an access type.
          Alternatively, the incomplete type may be completed in the
          body as an access type to a complete type.  For example:

              package Example is
                  type List is private;
              private
                  type List_Data;
                  type List is access List_Data;

                  -- completing the type as follows will avoid
          exceptions:

                  --  type Real_Data;
                  --  type List_Data is access Real_Data;

\f

         


              end Example;

              package body Example is

                  -- moving the following two lines to the private part
          will
                  -- avoid an exception at code gen time:

                  type Real_Data;
                  type List_Data is access Real_Data;

                  type Real_Data is record
                      ...
                      end record;

                  -- an alternative work around is to move the
          completion
                  -- of List_Data here, following the complete decl of
          Real_Data.
                  -- this works if Real_Data does not contain a
          List_Data element
                  -- type List_Data is access Real_Data;
                  ...
              end Example;

       *  In a single task, if units are promoted to coded or demoted
          from coded, and a code view or load proc is created, saved
          with Archive.Save, restored with Archive.Restore, or copied
          with Archive.Copy, the code generator may raise
          Nonexistent_Page_Error.  You can work around this either by
          running the latter operation from another command window
          (another job), or by running the second operation in another
          task within the job (i.e., place the second call in a task
          body within a declare block).  Note that the
          promotion/demotion may occur implicitly as the result of
          running an Archive operation with any of the options Promote,
          Remake or Goal_State => Coded option.  For example:

                  Compilation.Make;

                  --  The above operation might also be Archive.Restore
          or .Copy

                  declare
                      task Make_Code_View is
                      end Make_Code_View;

                      task body Make_Code_View is
                      begin
                          Cmvc.Make_Code_View;
                      end make_Code_View;
                  begin
                      null;
                  end;


\f

         


       *  In a package spec in a load view, if a representation spec for
          a private type is placed in the private part, the package spec
          must contain the pragma Open_Private_Part if it is to be
          exported (put in a spec view). This is necessary because load
          views have open private parts by default, but spec views have
          closed private parts.  When code is generated for the spec
          with a closed private part, the code generator ignores the rep
          spec, because it cannot see into the private part.  In the
          load view the code generator can see the rep spec in the
          private part, so different code is generated and the spec and
          load views are incompatible.  The compiler should reject the
          rep spec in the closed private part. The compiler ignores the
          Open_Private_Part library switch.

       *  While coding the body of a unit whose spec contains a
          constrained subtype declaration for an incomplete private
          type, the code generator reports various INTERNAL_ERRORS and
          the following message:

           1: ERROR Unsupported constraining of an incomplete
          discriminated record type

          The INTERNAL_ERRORS may be ignored: they indicate the code
          generator's inability to generate code for this unsupported
          source construct.

       *  The range values in package Standard for type Float and type
          Duration are displayed incorrectly by the editor.  For the
          correct new upper and lower bounds on these types, use (for
          example):

                     Io.Put_Line(Float'Last);  -- for the upper bound of
          type Float

                     Io.Put_Line(Float(Duration'First));   -- for the
          lower bound of
                                                           -- type
          Duration

       *  There is a bug in the code generator which manifests itself in
          library bodies containing separate tasks.  The code generator
          fails to recognize the correct coding order, and reports
          problems with inconsistent offsets.  To work around this
          problem, demote the library body and its subunits to
          installed, then recode the library body and its subunits.


       9.  Files

       *  When several tasks or jobs are deleting files in the same
          directory at the same time, some are likely to get lock errors
          (Io_Exceptions.Use_Error is raised).  Putting a handler around
          delete operations and trying again after a delay will allow
          them to proceed normally.


\f

         


       10.  Facit Terminal

       *  On the Facit terminal, the Numeric Comma key is mapped to the
          What.Load command instead of the Editor.Set.Argument_Prefix
          procedure.  This need not pose a problem, because the Facit
          keyboard has a numeric keypad to enter argument prefixes.


       11.  Target Build Utility

       *  The Target Build Utility Max_Name_Length value does not
          consider the suffix length when computing a file name length.
          You should instantiate the generic using a Max_Name_Length
          which adjusts for the length of the file name suffix.


       12.  Loader

       *  The loader terminates with an exception if an attempt is made
          to promote a main unit that contains a generic instantiation.
          The workaround is to make a skin for the unit and have the
          skin (which does not have a generic instantiation) be the main
          unit.


       13.  Activity Files

       *  Executing Activity.Create and specifying a source activity
          file with Mode => Activity.Value_Copy will do nothing.
          Specify Mode => Activity.Exact_Copy instead.

       *  The procedure Activity.Enclosing_View (and its functional form
          Activity.The_Enclosing_View) report (or return)
          <<CLASS_ERROR>> unless the argument resolves to an Ada unit.

       *  The procedure Activity.Enclosing_Subsystem (and its functional
          form Activity.The_Enclosing_Subsystem) returns the nearest
          enclosing world, whether it is a subsystem or a view.  Its
          argument must be a library.