Trailing-Edge
-
PDP-10 Archives
-
bb-bt99g-bb
-
t1s702.d11
There is 1 other file named t1s702.d11 in the archive. Click here to see a list.
EDIT DESCRIPTIONS FOR TOPS-10-KS-V702
EDIT 11071 FOR 702
[SYMPTOM]
The RENAME UUO allows the user to change .RBVER, .RBSPL, and
.RBNCA of his UFD, but only if he changes the protection as well. He
can always do a second RENAME to change the protection back. But why
should he be required to do so?
[DIAGNOSIS]
Ordinarily, the only operation an unprived job can do to a UFD is
to read it as a file. There is, however, an exception: the owner is
allowed to change the protection. The RENAME UUO then assumes that if
it's ok to change the protection, it must be ok to change any of the
other attributes as well. It is not legal, however, to change any of
the attributes unless the protection is changed as well.
[CURE]
Lie to CHKPRV, tell him we're changing the protection when
actually we're changing the attributes. Only lie if the extension is
UFD.
********************************************************************************
EDIT 11158 FOR 702
[SYMPTOM]
A user types SET BREAK <address> where address is in the ACs. No
address break occurs.
[DIAGNOSIS]
The monitor allows the SET BREAK command to set address breaks in
the ACs although the hardware ignores these addresses.
[CURE]
Do not allow addresses in the range of 1 to 17. Note that since
an address of 0 turns off address break but leave the conditions set,
0 must excluded from the range check.
********************************************************************************
EDIT 11160 FOR 702
[SYMPTOM]
PULSAR hangs in EW for itself.
[DIAGNOSIS]
As part of the effort to enhance PULSAR's labeled tape handling,
an edit was made to PULSAR which required a change in the monitor.
The monitor patch was generated, but it failed to be included in
Autopatch tape #8. Without the monitor patch, anytime PULSAR attempts
to do a swap label units TAPOP specifying the same drive for both old
and new units, the monitor places PULSAR in event wait for the tape
labeler.
[CURE]
If the old and new units are the same, make the TAPOP. function
a no-op.
********************************************************************************
EDIT 11167 FOR 702
[SYMPTOM]
SET WATCH FILES returns junk error codes on partial allocation
failures.
[DIAGNOSIS]
The WCHFIL routine expects M to be pointing at the user virtual
address of the error code in the ENTER block.
[CURE]
Set M accordingly on this type of error.
********************************************************************************
EDIT 11375 FOR 702
[SYMPTOM]
PTYs go into TO wait state at end of page (sometimes.)
[DIAGNOSIS]
MCO 11161 didn't take PTYs into account when it checked to see if
the page counter should be cleared.
[CURE]
If no characters have to be output, clear the line counter
always. If there are characters to be output, check to see if the
terminal is a PTY and if it is, always clear the page counter.
********************************************************************************
EDIT 11396 FOR 702
[SYMPTOM]
In the sequence OPEN-LOOKUP-USETI, the USETI takes the block
number as being relative to the file. In the sequence OPEN-USETI,
however, the block number is taken as being relative to the structure
(super I/O). The question is, what should the sequence
OPEN-ENTER-USETI do? (presently it does super I/O).
[DIAGNOSIS]
This is not the expected sequence. The user probably made a
mistake, and it would be dangerous to let him continue.
[CURE]
Make the sequence OPEN-ENTER-USETI be illegal. It will return an
IO.IMP error. Likewise, OPEN-LOOKUP-USETO will be illegal.
********************************************************************************
EDIT 11724 FOR 702
[SYMPTOM]
Stopcode UIL on (some) tape interrupts if FTAUTC is off and FTKLP
is on.
[DIAGNOSIS]
Phased code which in this particular instance should not generate
a phased address.
[CURE]
Relocate if IFAUTC=0.
********************************************************************************
EDIT 11727 FOR 702
[SYMPTOM]
Can't tell if a 'line' of input is waiting on a PIM mode
terminal with break characters set.
[DIAGNOSIS]
No code.
[CURE]
Keep a count of break chracters as they are received on a per
terminal
basis. Note that the worst thing about this is that everytime
the
break set is changed, a new break count must be calculated. This
can cause some overhead.
********************************************************************************
EDIT 11733 FOR 702
[SYMPTOM]
?No start address when running a program with a sharable high
segment a second time if FTKLP is turned off.
[DIAGNOSIS]
SVEUB gets called and in previous monitors, when a POPJ occured,
SVEUB would have done a DATAO PAG which would have cleared the paging
memory. However, in 7.02 to try to save the refills, SVEUB only does
that DATAO if the UBR is being changed. Thus, even though the map has
been redone, no one told the paging memory that the mapping had been
changed.
[CURE]
CONO PAG,@.CPEBR
********************************************************************************
EDIT 11746 FOR 702
[SYMPTOM]
Monitor gets confused if PAGE. UUO tries to munge its arg list.
[DIAGNOSIS]
Shouldn't let user do this
[CURE]
Return illegal arg list error if he tries.
********************************************************************************
EDIT 11748 FOR 702
[SYMPTOM]
ANF network free core is not always returned to the general
monitor free core pool, resulting in a potential loss of overall
system performance, inability to create new jobs, etc. due to a lack
of monitor free core.
[DIAGNOSIS]
Off-by-one indexing in PCBSEC, so that the maximum-message-size
buffers are never scanned to be deallocated.
[CURE]
Allow for maximum-message-sized buffers.
********************************************************************************
EDIT 11761 FOR 702
[SYMPTOM]
AOBJN pointer to TABSTR is one too large, allowing you to mount
37 file structures if .SLMAX is set to 36.
[DIAGNOSIS]
-.SLMAX-1
[CURE]
-.SLMAX
********************************************************************************
EDIT 11764 FOR 702
[SYMPTOM]
A file may be marked for deletion while FILDAE is checking access
to that file. We use the old (wrong) A.T.
[DIAGNOSIS]
No code.
[CURE]
Add code. Check if the A.T. has become unacceptable during the
time we were off letting FILDAE do his thing.
********************************************************************************
EDIT 11765 FOR 702
[SYMPTOM]
Multiply used clusters and/or RIB errors on multi-unit
structures.
[DIAGNOSIS]
If the UFD gets extended, and the file is being created on a
different unit than the UFD, there is no guarantee the SATs will be
written to reflect the extra cluster grabbed for the UFD. As soon as
file activity occurs on the UFD unit the SATs will be written, but if
a crash occurs before then too bad.
[CURE]
Call WTUSAT after extending the UFD.
********************************************************************************
EDIT 11779 FOR 702
[SYMPTOM]
1) Programs which depend on the GETTABs which tell them where
they came from to do GETSEGs and RUN UUOs get lookup error 23. 2)
FILDAE denies access to programs which should be allowed access.
[DIAGNOSIS]
PATH to the file which a program came from is junk. The data
used to be in JOBUAL but now gets clobbered by CORE UUOs.
[CURE]
Do a PATH. UUO after everything else needed to setup the CORE
image has been done.
********************************************************************************
EDIT 11788 FOR 702
[SYMPTOM]
Drive clear after error fails on KS.
[DIAGNOSIS]
Junk in T4.
[CURE]
Load unit number in T4 before calling DVCLR.
********************************************************************************
EDIT 11792 FOR 702
[SYMPTOM]
Stopcode IME in UPDA
[DIAGNOSIS]
Closing a file with excess allocated blocks at the end will call
UPDGIV which will call GIVBLK which calls UPDA in section 1. UPDA
does an LDB T1,PJOBN which gets an illegal section number page fail
depending on the bits lit in LH(F).
[CURE]
Reverse the order of SE1ENT / PUSHJ P,UPDA so UPDA gets called in
section zero.
********************************************************************************
EDIT 11798 FOR 702
[SYMPTOM]
Problems with the SET MEMORY ONLINE command. CPU may HALT when
trying to set non-existant memory online.
[DIAGNOSIS]
Pages are added to the free list before they are checked for being
non-existant. Also, KLSER/KSSER are using the wrong variable when
checking for a monitor page being non-existant.
[CURE]
Don't add pages to the free list until they have been checked for
being non-existant. Use the right variable.
********************************************************************************
EDIT 11811 FOR 702
[SYMPTOM]
Jobs in certain EW states without Control-C trapping can be
stopped by a Control-C. If they add Control-C trapping the job never
gets the trap.
[DIAGNOSIS]
Two checks in CLOCK1 if a job can be stopped by Control-C; one
doesn't check for EW.
[CURE]
Check for EW in both cases.
********************************************************************************
EDIT 11818 FOR 702
[SYMPTOM]
Undeserved "?Illegal address in UUO" upon executing a SAVE
command for a program with a high segment.
[DIAGNOSIS]
If the high segment is expanding, and there is not sufficient
core in core for the expansion, the code which sets up to do the
expansion on the next swap in loads R with JBTADR for the job and
overwrites JBTADR for the high seg with it. Actually, the left half
of JBTADR for the high seg is set correctly, but the right half ends
up pointing to .JDAT instead of .VJDT.
[CURE]
Load R with JBTADR for the high segment in such cases.
********************************************************************************
EDIT 11819 FOR 702
[SYMPTOM]
Problems with multipoint RDX output:
1. User program gets undeserved IO.IMP error return from OUT of
large (but not erroneously so) buffers to multipoint RDX
devices;
2. Data requests can be lost;
3. Output data is "hung" in the -10 and never gets sent;
4. Blocking output doesn't block (i.e., can take a non-blocking
return to the user program from the OUT monitor call);
5. Possible WEM stopcode; (Note: this MCO supersedes MCO
11801)
[DIAGNOSIS]
If the buffer is too large to fit the 'default' 32-word PCB size
allocated by the monitor, the user's buffer is split across multiple
PCBs for transmission to the remote. Unfortunately RDXSER needs to
put the multipoint 'DROP' number into each message, so it treats the
first part of each PCB's worth of data as the five-digit drop number,
usually finding 'junk' on all but the first segment of the buffer
(where the drop number is supposed to be), so lighting IO.IMP and
aborting the OUT monitor call. Further, if RDXSER cannot get a PCB to
send the buffer, it doesn't correctly "back out" of the transmit
attempt. The data request count has already been decremented, and is
not re-incremented. The drop number has already been parsed, and is
lost. Also, the "error" (i.e., "non-blocking") return to UUOCON is
always taken, whether or not the RDM device is OPENed in a
non-blocking I/O mode. Finally, the "drop" number field is not
counted in the NCL "COUNT" field.
[CURE]
Dynamically calculate the PCB buffer size based on the size of
the output request from the user. If the user's buffer contains more
data than either the RDX device's maximum message size (RDEMML
parameter in the DN8x) or the network maximum message size (MSGMAX
parameter in the 7.02 monitor) then abort the output and return an
IO.BKT error to the user. Note that this means that the segmenting of
user data buffers over the ANF network is NOT supported for multipoint
RDX devices. When RDXSER is unable to get a PCB, back up the DEVAXO
byte pointer and counter to the begining of the drop number so that
the next time through ROLOOP (the RDX output service loop) it can
again reparse the drop number. Take the non-blocking return to UUOCON
iff the RDM device is OPENed in a non-blocking I/O mode, otherwise
call NETSLP (i.e., block) waiting for a free PCB to do the output.
(Note that in this hopefully-rare case of non-blocking I/O being
unable to do the output because of the lack of a PCB, the user program
cannot depend on getting an (e.g.,) "output-done" PSI interrupt.
Instead the user program must have some sort of "hung timer" which
will cause the OUT monitor call to be re-executed at some time in the
future if all the output buffers have not been sent. This is not a
new condition, merely a non-obvious one of which the programmer should
be cognizant.) The data request count is automatically kept accurate
in 7.02 by not decrementing the count until the PCB has been sent
(This involved splitting 7.01's NTDCDQ routine into two routines -
NTDCDQ to check if any data requests are available, and NTDDDQ to
actually decrement the data request count after the PCB has been
queued for output). Finally, include the drop number in the NCL
message "COUNT" field when building the NCL data message.
********************************************************************************
EDIT 11825 FOR 702
[SYMPTOM]
Random stopcodes on systems with TU7x tapes on a DX10 or TU7x
tapes on a TM78. Undeserved tape read errors. Home block consistancy
failures. PAGTAB corrupted. Lots of symptoms, but it looks like the
excrement has hit the ventilator.
[DIAGNOSIS]
TX1KON and T78KON read extended sense information into the UDB.
Due to the way AUTCON core allocation works, consecutive virtual pages
are not consecutive physical pages. If the sense area crosses a page
boundary only the first few words get written to the intended sense
area; the rest are written to the subsequent physical page. Almost
anything could be in that subsequent page.
[CURE]
Teach AUTCON to ensure sense areas for certain tapes are kept
physically contiguous. Do the same for TKBCCL in the magtape KDB, as
that physical address gets passed to the hardware at times also.
********************************************************************************
EDIT 11847 FOR 702
[SYMPTOM]
"Run from" GETTAB tables get zeroed on a SAVE command.
[DIAGNOSIS]
Yes. Consensus is that we should really fill them in to reflect
the "new" origin of the core image.
[CURE]
Fill in the tables at SAVFIN; use essentially the same code as
GJOB (do PATH. UUO, etc.).
********************************************************************************
EDIT 11859 FOR 702
[SYMPTOM]
Stopcode KAF under various circumstances; user pointing .JBPFH
to a random location is one of the most likely.
[DIAGNOSIS]
If .JBPFH points to a page fault handler area where some of the
purported pages do not exist, then a typographical error causes the
code to loop indefinitely instead of just checking each page which is
supposed to exist.
[CURE]
Fix typo.
********************************************************************************
EDIT 11860 FOR 702
[SYMPTOM]
The sequence LOOKUP, RENAME, CLOSE, ENTER, OUT gives address check
if SET WATCH FILES set.
[DIAGNOSIS]
RENA37 calls WCHFIL to type the file watch info. WCHFIL destroys
the contents of S, which RENA37 stores into DEVIOS in the file's DDB.
[CURE]
Make WCHFIL preserve S in addition to F and U.
********************************************************************************
EDIT 11877 FOR 702
[SYMPTOM]
Programs doing output to an ASSIGNed RDX device can hang in
network event wait.
[DIAGNOSIS]
The IOSREL "device-has-been-RELEASed" flag in the RDX device's
DEVIOS word is not being cleared. This will cause the RDX device
service routine to not be NETWAKed if the job ever blocks for output
(waiting for data requests). Note that this can only happen to
ASSIGNed RDX devices - if the RDX device was not ASSIGNed then the
entire DDB was destroyed when the RELEAS was performed and the device
disconnected.
[CURE]
Clear the IOSREL flag on the first call to the output service
routine (this is the convention for network devices).
********************************************************************************
EDIT 11883 FOR 702
[SYMPTOM]
On some systems, a magtape cannot be referenced using MTxu:.
[DIAGNOSIS]
If a system has two or more tape controllers and at least two of
any one type of controller, the number of magtape entries in GENTAB is
insufficient for all DDBs generated by AUTCON.
[CURE]
Assume there will be at least two of every type controller per
CPU and build that many GENTAB entries. Since GENTAB is built at
assembly time and the actual number of tape controllers cannot be
determined until AUTCON runs, this solution may not be sufficent to
cover a worst case situation (i.e. three DX10s in a single CPU
system). However the likelyhood of this sort of configuration is
quite remote. In a normal configuration, there is little
justification for dynamically building GENTAB. We will address the
worst case situation when it arises.
********************************************************************************
EDIT 11891 FOR 702
[SYMPTOM]
IPCFQ. UUO ignores IP.CFR which indicates an indirected
receiver's PID is being used.
[DIAGNOSIS]
There is no code to check for IP.CFR being set by the user.
[CURE]
If IP.CFR is set, fetch the receiver's PID from the address
pointed to by word .IPCFR.
********************************************************************************
EDIT 11892 FOR 702
[SYMPTOM]
Stopcode IME during tape error recovery.
[DIAGNOSIS]
An off-by-one bug exists in a range check prior to indexing into
a dispatch table.
[CURE]
Correct the check.
********************************************************************************
EDIT 11893 FOR 702
[SYMPTOM]
Stopcode IME paging a non-sharable high segment.
[DIAGNOSIS]
AC J normally contains a job or segment number and is used to
index into job and segment tables. The routine HSVAD can leave junk
in the left half of J causing IMEs when tables are referenced from
section one.
[CURE]
Clear out the left half of J in routine TPAHS.
********************************************************************************
EDIT 11894 FOR 702
[SYMPTOM]
Stopcode BAC, IMEs, or EUEs. Messed up PDL also possible.
[DIAGNOSIS]
A job is sending an IPCF packet to EXEC. Before it could
increment .EPIPC for EXEC, it gets interrupted and someone else sends
something to EXEC. Both packets get processed thus decrementing
.EPIPC twice, but we didn't count it up for the original job yet. The
second decrement could cause the count to go to -1, but since we're
dealing with a 9-bit field, the next field (count of outstanding
sends) gets wiped. Eventually we pick up a packet which doesn't exist
and either cause a BAC trying to give back core, or get an IME trying
to reference it, or if the address is zero, muck with the packet
header thereby smashing the ACs.
[CURE]
AOS .EPIPC when the target job is interlocked.
********************************************************************************
EDIT 11913 FOR 702
[SYMPTOM]
Programs (in particular FAL) can get stuck in ANF EW state.
[DIAGNOSIS]
MCO 11448 opened a nasty little crack - a CLOSE on a TSK channel
in non-blocking mode sans PSI whose last UUO was an IN will hang in EW
state.
Note: This affects only the autopatch tape 9/10 monitor, this is not
in field-image 7.02.
[CURE]
Make really truly and positively sure that the job is NETWAKed.
********************************************************************************
EDIT 11927 FOR 702
[SYMPTOM]
BYTE mode tape IO fails on a 2020 system when a TU77/TM03 is
used.
[DIAGNOSIS]
MAPIO asked for a frame count argument, but didn't believe it
when TAPUUO supplied one.
[CURE]
Teach MAPIO to believe the frame count when supplied. Teach
CD2SER and LP2SER not to accidentally supply a frame count when
calling MAPIO.
NOTE
**** CAUTION **** If you have any
non-standard device drivers, be sure
that they supply either a correct frame
count or zero in the LH of P4 when
calling MAPIO
********************************************************************************
EDIT 11949 FOR 702
[SYMPTOM]
Stopcode EUE most common; other scenarios possible. The crashes
should show that a job was run which was in C state. Various jobs may
also appear to be in background batch when they shouldn't be, and
various background batch jobs may not be in the background batch
queues. This problem occurs only with the class schedular and
background batch enabled. A non-zero amount of lost time will
increase the probability of failure.
[DIAGNOSIS]
There are actually two problems. One is that the class schedular
assumes that only one job can be swapped in at a time. This is no
longer true in 7.02. The second problem is that a lost time scan can
set BBFLAG on a non-policy CPU after the policy CPU has cleared it in
preparation for its swap-in scan of the queues. This was not a
problem in 7.01 because the schedular interlock was held over each of
the operations so that they could not mutually occur.
[CURE]
To cure the first problem, compare job numbers instead of just
doing a SKIPN on BBFIT. To cure the second problem, clear BBFLAG in
preparation for a swap-in scan under the schedular interlock.
********************************************************************************
EDIT 11950 FOR 702
[SYMPTOM]
Stopcode PIP seen; stopcode IME probably most common; other
scenarios possible.
[DIAGNOSIS]
In 7.02, an additional entry point, MKADD, was added to routine
SVEUB whose purpose is to make a given job the currently addressable
job to the monitor. The purpose of this additional entry point was to
improve performance by eliminating unnecessary page table refills.
This is accomplished by not clearing the paging memory (which is done
automatically anytime the UBR is changed); this in turn is
accomplished by not changing the UBR to itself. The check for whether
the UBR would be changed to itself is by a comparison of .USJOB (a
variable in the UPT) with the desired job number; if they are
identical then the UBR would be being changed to itself and MKADD
merely exits rather than falling into SVEUB. There is unfortunately
one rare circumstance where this test is not applicable, to whit:
1. Consider two jobs, A and B; job B is swapped out and job A
is in core. The physical page used as job A's UPT is page X.
2. Job A is swapped out and job B is swapped in; it so happens
that the page allocated for job B's UPT is also page X (given
up by job A when it swapped out).
3. Job B does something which will require an interrupt to
process something in its context. The most usual thing here
is disk I/O.
4. The swapper in the meantime has decided that job A is to be
swapped into core. Pages are allocated for job A, and its
UPT is destined to be written to page Y. JBTUPM+A now points
to page Y. The core allocator very carefully points the slot
in the UPT which is set to point to itself to page Y. The
swapper then sets up to swap in job A's UPT and section 0
map.
5. The swapping I/O to read in job A's UPT now completes.
However, the last page the UPT for job A occupied was page X,
so now the UPT slot which is supposed to point to itself
(page Y) now points to page X. When the swapper sets up to
swap in the rest of the job, it will point page Y back at
itself, but there exists a finite window of time between the
time the I/O has physically completed and the time this
re-pointing is done.
6. During this window, two things happen. One is that COMCON
runs for job A at clock level. COMCON always calls SVEUB for
the job for which the command is processed; those commands
which really require the job to be in core check other things
and take appropriate action if they determine the job really
isn't in core yet. SVEUB will simply return if JBTUPM is 0
for the job in question, but in the case of job A, JBTUPM
currently points to page Y, so SVEUB sets mapping up to point
the UBR at page Y and points the SPT at page Y.
7. While COMCON has done this for job A, the second event
occurs: a disk interrupt happens for job B. Interrupt level
for the disk interrupt calls MKADD to make job B addressable.
Note, however, that MKADD will check .USJOB, which is mapped
through the SPT, and thus through the UPT itself due to the
mechanics of the way per-process space is mapped in the exec
address map. Normally, this would mean MKADD would compare
job B's job number with the job number in the .UPJOB slot of
physical page Y (which would be job A's job number) because
that is job A's UPT. However, since we are in this small
window where physical page Y points to physical page X as the
UPT, we erroneously compare Job B's job number with the job
number in page X, which is also job B's number, and conclude
that there is no need to change the mapping. This is,
however, wrong and things go downhill from there.
[CURE]
The problem is that the copy of the UPT written to the disk when
the job swaps out points at a page which will in all liklihood be
invalid when the job is again swapped in. Since this is inevitable,
point the UPT at an appropriate invalid page, namely the NULL job's
UPT, before writing it to disk. Then, when the job swaps in again,
during the above mentioned window the UPT will point to the NULL job's
UPT and hence .USJOB will resolve to 0 which will fail the comparison
with any real job number.
This also means routine MAPBAK, which depends on the UPT pointing
to itself, must be taught to reset the pointer in the UPT before
proceeding with its normal action.
********************************************************************************
EDIT 12004 FOR 702
[SYMPTOM]
Power fail recovery on the KL-10 does not work.
[DIAGNOSIS]
We do not restore the SPT in the recovery code.
[CURE]
Restore the SPT before dismissing the interrupt.
********************************************************************************
EDIT 12036 FOR 702
[SYMPTOM]
Cannot update a file using a logical name and zero filename in the
LOOKUP/ENTER block.
[DIAGNOSIS]
UPDATE compares the filename given in the ENTER with the one
remembered in DEVFIL, DEVEXT from the LOOKUP.
[CURE]
If the compare fails, compare DEVFIL, DEVEXT against the
appropriate fields in the logical name definition. This should also
make updates work with logicals defined /OVERRIDE.
********************************************************************************
EDIT 12044 FOR 702
[SYMPTOM]
Creation dates set by updating ENTER are not returned correctly on
the first subsequent LOOKUP of the file.
[DIAGNOSIS]
UPDATE is updating the creation date info in the RIB, but not in
the file's Access Table entry.
[CURE]
Have UPDATE also update the Access Table.
********************************************************************************
EDIT 12052 FOR 702
[SYMPTOM]
Update files grow, lost space on disk, each time the file is
closed from update mode.
[DIAGNOSIS]
DELRIB makes sure any bad block marked in .RBELB is allocated to
the file so it is not laying around waiting to hurt someone. Somehow,
.RBELB gets set non-zero (software detected error), with no block
number in the lower bits. DELRIB takes this block number (zero), and
calls TAKBLK to allocate the block. TAKBLK allocates any cluster,
since none in particular was asked for. .RBALC gets properly
incremented, but no RIB pointer ever gets directed to this cluster,
since anything TAKBLK returns is ignored.
[CURE]
Do not call TAKBLK if the block number in .RBELB is zero.
********************************************************************************
EDIT 12062 FOR 702
[SYMPTOM]
None generally observed unless PCO 10-702-139 is installed. If
this is the case, and the class schedular with background batch is
run, then the system will occasionally arrive at a state where no
background batch jobs ever get swapped in. Turning the class
schedular off until some background batch job swaps in, and then on
again will clear the situation.
[DIAGNOSIS]
We can forget that we were swapping in a background batch job if
it has a collision on the high segment owned by the job. In the case
of any normal job, we would scan the job repeatedly until the high
segment settled in or out of core, at which point we would perform the
appropriate action to be assured that the job was completely in core.
However, since we will only fit one background batch job into core at
any given time, and the flag (BBFIT) doesn't get cleared until we
finish swapping in the job we are remembering, we never scan that or
any other background batch job again. Prior to PCO 10-702-139, BBFIT
was zeroed indiscriminantly anyway so the situation had a tendency to
clear itself up.
[CURE]
Put jobs waiting for a high segment onto a linked list which is
scanned when the swapper runs until the high segments settle (at which
time they are removed from the list and the appropriate action taken).
********************************************************************************
EDIT 12072 FOR 702
[SYMPTOM]
PUF stopcodes while executing FILOP. RENAME with both FO.ASC and
FO.UOC set.
[DIAGNOSIS]
During the initial FILOP. processing, F is loaded with the USRJDA
entry for the channel number supplied in the FILOP. call (0 due to
FO.ASC). The new channel number is later assigned, but the contents of
F are still used due to FO.UOC. SEGCON is called to delete the sharable
segment if this file is one. In doing so, it executes a PATH. UUO on
the new channel number, which fails, since there was never a file opened
on this channel.
[CURE]
Zero F just after assigning the channel number. This will result
in error code ERCNO% (channel not opened) being returned, which is the
expected result.
********************************************************************************
EDIT 12120 FOR 702
[SYMPTOM]
XCHNGE command doesn't (very well in 7.02, at all in 7.03)
[DIAGNOSIS]
1 of n:
1) You can XCHNGE non-removable media disks (7.02/7.03)
2) If you XCHNGEd RA60s you'd clobber the KDB and spread the UDB
over never-never land (7.03)
3) Code doesn't work well for dual-ported disks (7.02/7.03)
[CURE]
1) Don't let the dummies do this
2) Get the offsets right
3) Handle dual-ported disks
********************************************************************************
EDIT 12152 FOR 702
[SYMPTOM]
FILOP. append or update for a file given a pathological name
results in error code 5 (Illegal Sequence of UUOs) if a path which does
not match that of the pathological definition is given in the LOOKUP
block.
[DIAGNOSIS]
UPDAT1 requires the supplied path to match the path of the file
looked up. Since the LOOKUP code substitutes the pathological's path
for any supplied in the FILOP. call, the file will probably have come
from someplace different than the specified path.
[CURE]
Since the LOOKUP uses the pathological's path, the updating ENTER
should also. If the existing PPN comparison fails, use the PPN from the
pathological definition.
********************************************************************************
EDIT 12154 FOR 702
[SYMPTOM]
Bizarre statistics recorded in magtape usage entries - 524292
hard read errors and 524 (thousand) characters written.
[DIAGNOSIS]
QUASAR sends part of a volume switch message from PULSAR to the
accounting daemon as statistics for a magtape usage entry.
Prior to MCO 10968 (701A) and QUASAR edit 1165, QUASAR did TAPOP.
UUOs to get the magtape statistics when a tape was dismounted or
when a volume switch occurred. The above edits fixed the problem
where the counters were getting cleared before QUASAR did the
UUOs to read the statistics. The statistics were appended to the
"deassign" message sent by the monitor to QUASAR when a device
was released. However, the volume switch code in QUASAR still
called I$TDSM assuming it did TAPOP. UUOs to read the
statistics, but edit 1165 changed I$TDSM to get the stats from
the "deassign" message. The problem is that when I$TDSM is
called at volume switch time, the message just received is a
"volume switch" message from PULSAR, not a "deassign" message
from the monitor. So I$TDSM happily takes part of the "volume
switch" message and sends it as magtape stats to the accounting
daemon.
[CURE]
In the monitor, add a new entry point, SNDVSS, in SNDFIN. Modify
SNDFIN to lite a flag in the "deassign" message indicating it's
really tape statistics for a volume switched unit (conceptually a
"deassign" for accounting purposes) when entered via SNDVSS. Add
a call to SNDVSS in TMPLSU just before updating the database to
reflect the volume switch. Also remove the call to TPSTAT to
report stats to the user (SET WATCH MTA) and insert it right
after the call to SNDVSS in TPMLSU. This prevents the stats from
being reported twice for the same tape drive when a volume switch
is cancelled.
In QUASAR, add code in D$DEAS and I$TDSM to recognize the monitor
flag in the "deassign" message from the monitor and do the
correct things with respect to sending the accounting daemon tape
statistics. Also in QUASAR, remove the call to I$TDSM at VSR.0
which was responsible for the erroneous numbers to begin with.
This call is no longer needed since the monitor will now send a
message when a volume switch occurs.
********************************************************************************
EDIT 12156 FOR 702
[SYMPTOM]
Can't RENAME the path of a file opened on a pathological device.
Attempts to do so usually result in the file being renamed into the
pathological definition's top level UFD.
[DIAGNOSIS]
Current code will only allow the pathological's definition as the
new path for a RENAME, but RENA16 forgets to reset the logical pointer
before calling SETPTH, resulting in SETPTH thinking that the definition
points to the UFD.
[CURE]
Allow RENAMEs to change the path of a file even if opened on a
pathological device. This is done by hiding any logical name
information from SETPTH, so that the path supplied on the RENAME is
used.
********************************************************************************
EDIT 12163 FOR 702
[SYMPTOM]
Cannot use certain 2-character pathological names (LP:, CP:, CR:, PP:,
PR:, SY:, and TT:).
[DIAGNOSIS]
These PDP-11 style device names are converted by DDBSRC to the TOPS-10
equivalents. However, the conversion is done before checking for
pathological name assignments, so if the user has defined a pathological
name using one of the above 2-character names any reference to that name
will use the TOPS-10 equivalent device name rather than the pathological
name.
[CURE]
Move the conversion to after checking for pathological names.
********************************************************************************
EDIT 12171 FOR 702
[SYMPTOM]
After MCO 11589, KS systems with ONLY ANF-10 networks fail to
initialize.
[DIAGNOSIS]
COMMON.MAC was edited, but didn't make the MODULE list.
[CURE]
Properly initialize the KDL page
********************************************************************************
EDIT 12174 FOR 702
[SYMPTOM]
NNF stopcode when closing an output channel to a spooled device
opened via an assigned logical name, after no output has been done.
[DIAGNOSIS]
While openning the device, the spooled device modes word is not
getting stored into the newly created DDB. When the channel is closed,
it is treated incorrectly due to the incorrect device modes word,
eventually causing an NNF stopcode.
[CURE]
Store the modes in the new DDB.
********************************************************************************
EDIT 12179 FOR 702
[SYMPTOM]
Spurious RIB errors when one job is trying to rename a file while
another job is simultaneously attempting to supersede it.
[DIAGNOSIS]
The superseding job is trying to decide whether it is indeed doing
a supersede or a create by finding the file on disk. The NMB for the
file has had its KNO and YES bits cleared by the renaming job, which
leads the superseding job to have to read the file's directory to
determine whether or not the file actually exists. The RIB error occurs
when the UFD is read just after the renaming job has written the new RIB
for the renamed file, but before it has updated the directory. Since
the filename in the RIB does not match that in the directory, a RIB
error is returned.
[CURE]
When renaming the file, just clear the YES bit in the NMB. Since
we've just changed the name of the file, we know the old name no longer
exists on that structure. The superseding job will interpret this as
meaning the file doesn't exist, and therefore not bother trying to find
the file in the directory.
********************************************************************************
EDIT 12181 FOR 702
[SYMPTOM]
Harder to diagnose crashes than it should be.
[DIAGNOSIS]
SWPSER HALTs if it can't allocate two contiguous pages of
swapping space to swap out the UPT and the MAP.
[CURE]
Change the halt into STOPCD UMN.
********************************************************************************
EDIT 12189 FOR 702
[SYMPTOM]
TAPOP. UUO ingores UU.PHY (the physical-only) bit.
[DIAGNOSIS]
UUOCON sets up P1 with PHONLY prior to dispatching to
TAPUUO. The TAPOP dispatch overwrites the left half of P1
with a zero instead of preserving it.
[CURE]
Change a MOVE to a HRR.
********************************************************************************
EDIT 12190 FOR 702
[SYMPTOM]
If a newly formated pack is mounted and the operator
chooses not to write the HOM blocks at ONCE time, but
instead does it with TWICE, PULSAR cannot mount a structure
using said pack.
[DIAGNOSIS]
By default, all units are marked as having a pack
mounted during ONCE. When a unit is found to be off-line,
the status is changed to "no pack mounted". If the operator
chooses not to write the HOM blocks, the status is left to
"pack mounted" when it should be changed to "no pack
mounted".
[CURE]
Set "no pack mounted" status appropriately.
********************************************************************************
EDIT 12199 FOR 702
[SYMPTOM]
Extended ENTER on a SPOOL'd DDB causes trashed job/file name or
address check when C(.RBCNT) = .RBVER
[DIAGNOSIS]
FILUUO special cases an extended ENTER to a SPOOL'd DDB which
specifies .RBSPL (=.RBVER+1). The check is off by 1.
[CURE]
Remove the "-1" from the CAIGE at UENTR+14.
********************************************************************************
END OF TOPS-10-KS-V702