|
|
DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 23435 (0x5b8b)
Types: TextFile
Notes: R1k Text-file segment
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
└─⟦5a81ac88f⟧ »Space Info Vol 1«
└─⟦f923cd6d9⟧
└─⟦this⟧
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.