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 echoplexpolitereplay 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