1 
  2 09/21/87  comm_system
  3 Known errors in the current release of comm_system.
  4 #         Associated TR's
  5 Description
  6 
  7 383  phx20276
  8 The substraddr internal proc of bisync_.pl1 is supplied with a fixed
  9 bin (21) but its parameter is declared as a fixed bin (17).  The proc
 10 uses the parameter as an array index and the compiler does attempt to
 11 use index registers in this case.  Thus, a negative value can be loaded
 12 into the index register causing out-of-bounds faults.
 13 
 14 382  phx20721
 15 A dump_mpx/load_mpx with -force of a deconfigured MPX will crash system
 16 with the message:  "lock:  lock_fast mylock err 52|0".  The
 17 fnp_util.pl1 module failed to unlock datanet_info.configuration_lock
 18 after it found that the FNP was unavailable.
 19 
 20 381  phx20676
 21 If a user doesn't type in a CR or LF during the system's prompt for
 22 password, and the system times out, accumulated terminal input is
 23 redisplayed, causing user's password to be displayed on the terminal.
 24 The system writes out the "hangup" message on the terminal and then
 25 sends a "hangup" control order.  This causes the dmpbuf internal proc
 26 in hsla_man to collect the input (and under certain conditions of
 27 echoplex,polite,replay) echo it back out to the terminal and chain it
 28 for input to the host.  The input chain is then promptly thrown out
 29 later in the hangup sequence.
 30 
 31 The problem can be solved completely for the immediate situation by
 32 adding code in dmpbuf to test to see if the channel is being hungup and
 33 to not collect the input for echoing or for input to the host.
 34 
 35 373  phx20378
 36 Cannot run COLTS on a multiplexer channel.
 37 
 38 372  phx20279
 39 Suspend/resume flow control sometimes gets stuck if the device sends
 40 multiple suspend characters in a short time, eventually causing status
 41 queue overflow and consequent loss of the resume character.  An
 42 effective fix (described in more detail in TR 20279) is to use a CCT
 43 that ignores suspend characters while suspended.
 44 
 45 370  phx19429
 46 tty_write doesn't reset the line counter on form feed unless pl mode is
 47 in effect; the result is that if the terminal *temporarily* leaves pl
 48 mode, the line count may be wrong when the mode is reentered.  The TR
 49 proposes a simple and straightforward fix.
 50 
 51 367  phx18492
 52 cv_cmf should reject baud rates below 1200 for bisync (and probably
 53 other synchronous) line types.
 54 
 55 366  phx18638
 56 tty_write uses the "break_flag" variable for too many things; as a
 57 result, if pl mode is used in conjunction with block_acknowledgement
 58 oflow, *every* block gets marked as EOP.
 59 
 60 365  phx18631
 61 The clearing of the idle counter may not always work because, contrary
 62 to the comment, the a reg.  may not contain 0 at the label etr035
 63 (i.e., if the increment count idlinc has exceeded 18 bits).
 64 
 65 363  phx18604
 66 There is a race condition in MCS tracing that can arise if tracing is
 67 turned off while heavy tracing (particularly buffer chasing) is going
 68 on, because the trace array can be freed out from under mcs_trace.
 69 More details, and a proposed fix, appear in the TR.
 70 
 71 362  phx18532
 72 The field in the TTT that defines the length of the encoded initial
 73 string is declared fixed bin (8) unaligned -- it should be fixed bin
 74 (9) unsigned so that strings longer than 256 can be displayed.
 75 
 76 361  phx18514
 77 A better error code should be returned if an attempt is made to set
 78 iflow or oflow mode before setting the flow control characters.
 79 "Improper mode specification for this device" (the text for
 80 error_table_$badmode) is misleading.
 81 
 82 360  phx18474
 83 The date_time fields in mcs_memory_map.incl.pl1 are decalred aligned,
 84 but in the core image they end up on odd word boundaries because the
 85 length of the image is in word 0.
 86 
 87 359  phx18494
 88 sqovfl attempts to "convert" sf.ssl in the a register to words by doing
 89 a 'qls 4'!  It should be 'als 2' as in hintr.
 90 
 91 358
 92 If the DIA is on a channel higher than the HSLAs (like, say 14o), and
 93 init decides to crash while processing HSLA subchannels (because of CDT
 94 errors, or whatever), the crash won't get signalled to Multics because
 95 the "sel" instructions for DIA I/O aren't set up yet.
 96 
 97 357  phx18448
 98 bind_fnp's calculation of whether the core image will load in 32K
 99 doesn't allow for the little program that gicb uses to move the core
100 image around.
101 
102 355  phx16653
103 Surrounding a write call with "modes rawo;...;modes ^rawo" may not have
104 the desired effect, since the second modes call may take effect before
105 the output has completed.  This is especially likely if done within a
106 program rather than via commands.
107 
108 353  phx18296
109 If dump/patch order takes a fault (e.g., if user doesn't have write
110 access to the target segment), the dump_patch_lock is left
111 irretrievably locked after crawlout.  A cleanup handler could and
112 should take care of this.
113 
114 349  phx15493
115 cv_ttf accepts delay values > 1.00 for var_tab_delays, although they
116 are rejected by ring 0.
117 
118 341  phx03016 phx17190
119 In ^ll mode, if the column position gets too large to hold in
120 wtcb.white_col, it will wrap around, resulting in the insertion of
121 arbitrary amounts of white space.  There is no reliable way to fix
122 this.
123 
124 340  phx17048
125 sty_mpx doesn't implement lfecho mode.  It probably should, since it
126 can make it difficult to get input read.
127 
128 339  phx17142
129 (1) bisync_attach doesn't undo a ring-0 attachment if it encounters an
130 error later on.  (2) bisync_detach uses the wrong event channel.
131 
132 336  phx16985
133 tty_ doesn't remember that a call to set_event_channel has been made,
134 resulting in errors at close time.  See the TR for details and a
135 proposed fix.
136 
137 333  phx16855
138 "init" mode turns off oddp and no_outp, which are hardware
139 characteristics which probably don't want to be turned off.  There may
140 be others.
141 
142 332  phx16673
143 map355 doesn't report the pathname of the directory when complaining
144 about lack of "s" permission on the directory containing the macro
145 library.
146 
147 331  phx15391
148 db_fnp etc.  know nothing about gicb, so if the FNP crashes in gicb,
149 the crash message is totally uninformative (and in fact confusing).
150 
151 320  phx16081
152 fnp_multiplexer$check_modes has a mode_name temporary declared char
153 (8), so it accepts invalid modes whose first 8 characters match a valid
154 mode name (e.g., echoplex=junk).  set_modes checks them properly, so
155 such modes don't result in modes getting set, but it's inefficient and
156 possibly dangerous.
157 
158 318
159 If a user does set_tty -ttp <TYPE>, where <TYPE> includes ETX/ACK
160 protocol, and the user's channel is an X.25 subchannel, x25_mpx will
161 return error_table_$bad_arg when asked to set the flow control
162 characters.  Since tty_index is doing a whole set_terminal_data order,
163 it can't (and doesn't) do anything in particular with this code except
164 return it, which results in a terminal message saying:  "set_tty:
165 Invalid argument." This is very confusing to the user.  set_tty -pr
166 -all indicates that all the modes, characters, etc., were set in
167 accordance with the terminal type specification.  However, if the user
168 turns on oflow mode, x25_mpx will cheerfully do XON/XOFF processing
169 (since that is all that X.29 understands), which is probably not what
170 the user intended.  This is not easy to fix -- the only really clean
171 way is to completely reimplement set_terminal_data so the caller gets
172 back a structure telling him (truthfully) what worked and what didn't.
173 
174 313  phx15383
175 The fnp_crash_notify.ec uses the coreimage pathname in the current CDT.
176 If a CDT with a different coreimage has been installed since the
177 previous FNP load, the resulting message will be misleading.  This
178 seems like a minor inconvenience, and unlikely to arise very often.
179 Furthermore, there's no better place to get the information, since it's
180 not saved anywhere.
181 
182 310  phx15077
183 polled_vip_mpx uses the tally of the first buffer in the chain instead
184 of the current buffer when deciding if the chain contains the end of
185 the message; see the TR for details.
186 
187 308  phx14893 phx16578
188 tty_util$find_char checks for 8-bit characters before checking for
189 successful conversion, and therefore doesn't work properly for 256-char
190 tables.
191 
192 306  phx13162
193 dn355 should check the baud rate provided by the FNP for validity,
194 instead of cheerfully using it as an array index.  If it's garbage, it
195 can cause a bounds fault in wired code.
196 
197 304  phx14694
198 online_dump_fnp always gives the FNP tag as "a".
199 
200 300  phx13895 phx14047
201 tty_io_call_control_ is not very clever about what orders are
202 acceptable and what ones shold be rejected.  See the TRs for details.
203 
204 299  phx14463
205 set_tty requires that framing characters be set by a call previous to
206 the one that sets blk_xfer mode; if a user attempts to set both in the
207 same call, he gets a (confusing) error_table_$bad_mode.  Either set_tty
208 should be changed to figure out the correct ordering, or the
209 documentation should be updated to warn users of this dependency.
210 
211 298
212 tandd_attach followed by release_channel without any COLTS activity in
213 between leaves the channel unusable because no hangup signal ever comes
214 from the FNP.
215 
216 296  phx14118
217 sample_time request to debug_fnp with no argument prints 2**18-T
218 instead of T because it doesn't realize that the FNP's version is
219 negative.
220 
221 292  phx14091
222 If system_comm_meters is called before ANY space allocation activities
223 have happened, it gets zerodivide calculating the average space used
224 for input, output, and control.
225 
226 289  phx14075 phx14888
227 Starting with MCS 6.0, it's fairly easy for the cumulative space
228 available in a large FNP (.mspav) to exceed 2**35; this causes it to
229 wrap, and appear negative.  Because of the way the formatting routines
230 used by mcs_meters_ work, this results in an apparently positive (but
231 small) "average space available" and an equally small but negative "%
232 of pool available" to be displayed.  Similar problem exists with
233 cumulative idle counter, and probably some other meters as well.
234 Solution involves a scheme whereby certain (all?)  cumulative meters
235 only get updated every N times, which may be tricky.
236 
237 286  phx13597
238 polled_vip_tables gets confused if more than 3 successive NAKs occur;
239 see the TR for details.
240 
241 283  phx13600
242 channel_comm_meters gives a bogus error message, apparently including an
243 uninitialized channel name, if called with a control arg but no channel
244 name.
245 
246 279  phx13241
247 map355 doesn't work if source is in process directory because of access
248 problems in using manipulate_pathname_.
249 
250 277  phx13076
251 Rapid-fire orders that require FNP action can result in the FNP mailbox
252 getting full and delay queue entries start to fill tty_buf.
253 
254 270  phx12668
255 tty_$get_line may return a partial line and a zero error code in
256 no_block mode.  it should return an error code along with the partial
257 line ( a new code probably has to be invented -- see the TR).
258 
259 269  phx17824
260 if status processing falls behind in such a way that a TRO is handled
261 after the control tables have restarted output, the ICWs get clobbered
262 and a fresh TRO is forced.  This can go on forever.  In conjunction with
263 bug 268, it can also cause buffers with NLs in them to pile up on the
264 t.ocur chain until the FNP runs out of space.  This probably can't be
265 fixed without major overhaul in hsla_man.
266 
267 268  phx17824
268 Since tstwrt can't tell prepnl buffers from other kinds of output, a
269 prepnl while there's already a prepnl buffer on the t.ocur chain will
270 cheerfully add another one.  Maybe a TIB flag and/or a buffer flag could
271 be used to prevent this.
272 
273 258  phx11450
274 If interrupts come in faster than the scheduler can dispatch them (as
275 from a badly malfunctioning HSLA channel) an overflow can occur in the
276 scheduler trying to keep count of pending interrupts.
277 
278 254  phx12056
279 tty_ returns error_table_$not_open rather than
280 error_table_$undefined_order_request if an unrecognized order is given
281 before the switch is opened.
282 
283 244  11661
284 bstat request of db_fnp needs to be reworked
285 
286 242  11545
287 g115_tables appears not to meter most output messages
288 
289 241  11505
290 multiplexers should zero their saved meters upon allocation
291 
292 239  phx11423 phx16077 phx16291 phx14552
293 if tty_write subdivides the given output string, and then the remainder
294 reduces to 0 characters (for example, as a result of edited mode), the process
295 blocks indefinitely because no send_output ever comes back
296 
297 238  11403
298 control sequences can make the FNP think the column position is very large, so
299 that a newline can generate enough delays to overflow the echo buffer, thereby
300 losing the echoed LF.
301 
302 236  8192
303 all pending output for a 3270 channel is discarded if a WACK is received
304 
305 235
306 channel_comm_meters on a multiplexer that has never been loaded gets
307 error_table_$io_no_permission because lcte.channel_type is 0.  get_mcm_meters
308 should check lcte.initialized and return some informative code if it's off.
309 
310 233  10977
311 adbyte and cvaddr do not deal properly with addresses beyond the first 32
312 words of the TIB extension
313 
314 232  10959
315 chstr macros takes some args as octal and some as decimal because of use of
316 set pseudo-op.
317 
318 231  phx10304 phx12795
319 can_type=replace doesn't work right if input contains tabs and doesn't start
320 at left margin
321 
322 229  9951
323 frame begin/end or flow control characters greater than 177 cause hsla_man to
324 store status character beyond the end of the CCT
325 
326 219  9191
327 Characters in the FNP when breakall is entered aren't forwarded until another
328 character is typed, thereby disabling type-ahead for programs that enter
329 breakall in order to read a response.  FNP should forward any pending input
330 (with break indication) upon entering breakall.
331 
332 216  8767
333 n_bootloads, time_last_crash, and last_tbf in CDT entries for multiplexers are
334 not maintained.
335 
336 213  8447
337 if line breaks come in very rapidly, hsla_man status processor gets behind,
338 and output subop of normal write dcwlst never gets executed before quit
339 processing overwrites current dcwlst -- t.ocur & t.ocp don't get updated
340 properly and pre-tally-runout and dmpout try to free the same chain.
341 
342 210  8223 9726
343 If a process gets stuck in ring 0 with a channel lock locked, attempts to bump
344 it will make the initializer go waiting indefinitely on the lock so it can
345 warn the user.  Similarly, if a process terminates with the channel lock
346 locked, the initializer will get stuck when it tries to recover the channel
347 (see also suggestions 67 & 68)
348 
349 206  8014
350 hangup order doesn't work on channel with suspended output because
351 control_tables won't look for hangup order until terminate status comes back.
352 
353 201  4997
354 cv_cmf does not several global keywords (such as Answerback and the flow
355 control stuff
356 
357 200  4997
358 cv_cmf should not be sensitive to case in multiplexer_type
359 
360 194
361 Limit is needed on number of delay queue entries (per-channel)
362 
363 193  6623
364 input xte status shouldn't crash FNP -- maybe mask channel, or just take it
365 out of receive
366 
367 177
368 if two or more channels need space, they can take turns indefinitely sending
369 each other space_available interrupts when they dequeue their own (assuming
370 that the space is insufficient and that they make fresh needs_space calls each
371 time).
372 
373 174  5266 6699
374 In block acknowledgement mode, end-of-block characters inserted in the middle
375 of escape sequences make both the escape sequence and the end-of-block
376 unrecognizable.
377 
378 173
379 fnp_multiplexer$set_modes sends mailboxes for modes that check_modes would
380 have rejected, e.g.  echoplex to 2741 (can happen if "init" specified)
381 
382 135
383 If booting an FNP that hadn't crashed (as at system startup after a Multics
384 crash), an interrupt while gicb is being loaded can cause "illegal opcode"
385 with IC = 737.  There does not seem to be any way to fix this.  Rebooting the
386 FNP works.
387 
388 125
389 tty_write translates EOP sentinel if a translation table is provided
390 
391 123  6219 11272
392 If in ^ll mode, wtcb.actcol can wrap around if it exceeds 255, and appear to
393 be equal to white_col
394 
395 119
396 stop_fnp followed by start_fnp loses lines that were not dialed up at the time
397 of the stop because their listen flags are turned off.  dia_man must call
398 itest for all lines on accept_calls, and some control tables modules have to
399 be modified
400 
401 106
402 tty_ suppresses error_table_$smallarg for modes (may be compatibility issue)
403 
404 55
405 dn355_messages: configuration error message refers to lines file rather than
406 CDT
407 
408 52
409 trace call for dia i/o queue entries doesn't isolate opcode, therefore
410 includes word count
411 
412 50  1993 2421
413 warn * * can run out of buffers because everyone gets tty_write_forced at once
414 
415 44
416 excess send_outputs can cause output to be done out of order (can this
417 be prevented in dn355?)
418 
419 27
420 hsla_man does not recover properly if channel stops switching ICWs: sffcoi
421 doesn't get corrected, buffer gets freed out of middle of chain
422 
423 16
424 booting with HSLA 0 and HSLA 2 but not HSLA 1: IOM channel for HSLA 2 ends up
425 masked (load_fnp_ missets .crnhs and init believes it); same thing happens if
426 HSLA N has channels configured but HSLA N-1 doesn't
427 
428 15
429 can't boot FNP with several LSLAs and no HSLAs unless HWCM space is reserved
430 for one HSLA (store fault in init while initializing LSLA 2)
431 
432 7
433 replayed input may not appear until after the output that it generated (this
434 may be hard to fix; should we never send input before replaying it?)
435 
436 6
437 tabecho doesn't work right when terminal echoes 1 or more spaces for tab
438 
439 2
440 Last character or two of interrupted input does not always get replayed
441 (control_tables problem)