09/21/87 comm_system Known errors in the current release of comm_system. # Associated TR's Description 383 phx20276 The substraddr internal proc of bisync_.pl1 is supplied with a fixed bin (21) but its parameter is declared as a fixed bin (17). The proc uses the parameter as an array index and the compiler does attempt to use index registers in this case. Thus, a negative value can be loaded into the index register causing out-of-bounds faults. 382 phx20721 A dump_mpx/load_mpx with -force of a deconfigured MPX will crash system with the message: "lock: lock_fast mylock err 52|0". The fnp_util.pl1 module failed to unlock datanet_info.configuration_lock after it found that the FNP was unavailable. 381 phx20676 If a user doesn't type in a CR or LF during the system's prompt for password, and the system times out, accumulated terminal input is redisplayed, causing user's password to be displayed on the terminal. The system writes out the "hangup" message on the terminal and then sends a "hangup" control order. This causes the dmpbuf internal proc in hsla_man to collect the input (and under certain conditions of echoplex,polite,replay) echo it back out to the terminal and chain it for input to the host. The input chain is then promptly thrown out later in the hangup sequence. The problem can be solved completely for the immediate situation by adding code in dmpbuf to test to see if the channel is being hungup and to not collect the input for echoing or for input to the host. 373 phx20378 Cannot run COLTS on a multiplexer channel. 372 phx20279 Suspend/resume flow control sometimes gets stuck if the device sends multiple suspend characters in a short time, eventually causing status queue overflow and consequent loss of the resume character. An effective fix (described in more detail in TR 20279) is to use a CCT that ignores suspend characters while suspended. 370 phx19429 tty_write doesn't reset the line counter on form feed unless pl mode is in effect; the result is that if the terminal *temporarily* leaves pl mode, the line count may be wrong when the mode is reentered. The TR proposes a simple and straightforward fix. 367 phx18492 cv_cmf should reject baud rates below 1200 for bisync (and probably other synchronous) line types. 366 phx18638 tty_write uses the "break_flag" variable for too many things; as a result, if pl mode is used in conjunction with block_acknowledgement oflow, *every* block gets marked as EOP. 365 phx18631 The clearing of the idle counter may not always work because, contrary to the comment, the a reg. may not contain 0 at the label etr035 (i.e., if the increment count idlinc has exceeded 18 bits). 363 phx18604 There is a race condition in MCS tracing that can arise if tracing is turned off while heavy tracing (particularly buffer chasing) is going on, because the trace array can be freed out from under mcs_trace. More details, and a proposed fix, appear in the TR. 362 phx18532 The field in the TTT that defines the length of the encoded initial string is declared fixed bin (8) unaligned -- it should be fixed bin (9) unsigned so that strings longer than 256 can be displayed. 361 phx18514 A better error code should be returned if an attempt is made to set iflow or oflow mode before setting the flow control characters. "Improper mode specification for this device" (the text for error_table_$badmode) is misleading. 360 phx18474 The date_time fields in mcs_memory_map.incl.pl1 are decalred aligned, but in the core image they end up on odd word boundaries because the length of the image is in word 0. 359 phx18494 sqovfl attempts to "convert" sf.ssl in the a register to words by doing a 'qls 4'! It should be 'als 2' as in hintr. 358 If the DIA is on a channel higher than the HSLAs (like, say 14o), and init decides to crash while processing HSLA subchannels (because of CDT errors, or whatever), the crash won't get signalled to Multics because the "sel" instructions for DIA I/O aren't set up yet. 357 phx18448 bind_fnp's calculation of whether the core image will load in 32K doesn't allow for the little program that gicb uses to move the core image around. 355 phx16653 Surrounding a write call with "modes rawo;...;modes ^rawo" may not have the desired effect, since the second modes call may take effect before the output has completed. This is especially likely if done within a program rather than via commands. 353 phx18296 If dump/patch order takes a fault (e.g., if user doesn't have write access to the target segment), the dump_patch_lock is left irretrievably locked after crawlout. A cleanup handler could and should take care of this. 349 phx15493 cv_ttf accepts delay values > 1.00 for var_tab_delays, although they are rejected by ring 0. 341 phx03016 phx17190 In ^ll mode, if the column position gets too large to hold in wtcb.white_col, it will wrap around, resulting in the insertion of arbitrary amounts of white space. There is no reliable way to fix this. 340 phx17048 sty_mpx doesn't implement lfecho mode. It probably should, since it can make it difficult to get input read. 339 phx17142 (1) bisync_attach doesn't undo a ring-0 attachment if it encounters an error later on. (2) bisync_detach uses the wrong event channel. 336 phx16985 tty_ doesn't remember that a call to set_event_channel has been made, resulting in errors at close time. See the TR for details and a proposed fix. 333 phx16855 "init" mode turns off oddp and no_outp, which are hardware characteristics which probably don't want to be turned off. There may be others. 332 phx16673 map355 doesn't report the pathname of the directory when complaining about lack of "s" permission on the directory containing the macro library. 331 phx15391 db_fnp etc. know nothing about gicb, so if the FNP crashes in gicb, the crash message is totally uninformative (and in fact confusing). 320 phx16081 fnp_multiplexer$check_modes has a mode_name temporary declared char (8), so it accepts invalid modes whose first 8 characters match a valid mode name (e.g., echoplex=junk). set_modes checks them properly, so such modes don't result in modes getting set, but it's inefficient and possibly dangerous. 318 If a user does set_tty -ttp , where includes ETX/ACK protocol, and the user's channel is an X.25 subchannel, x25_mpx will return error_table_$bad_arg when asked to set the flow control characters. Since tty_index is doing a whole set_terminal_data order, it can't (and doesn't) do anything in particular with this code except return it, which results in a terminal message saying: "set_tty: Invalid argument." This is very confusing to the user. set_tty -pr -all indicates that all the modes, characters, etc., were set in accordance with the terminal type specification. However, if the user turns on oflow mode, x25_mpx will cheerfully do XON/XOFF processing (since that is all that X.29 understands), which is probably not what the user intended. This is not easy to fix -- the only really clean way is to completely reimplement set_terminal_data so the caller gets back a structure telling him (truthfully) what worked and what didn't. 313 phx15383 The fnp_crash_notify.ec uses the coreimage pathname in the current CDT. If a CDT with a different coreimage has been installed since the previous FNP load, the resulting message will be misleading. This seems like a minor inconvenience, and unlikely to arise very often. Furthermore, there's no better place to get the information, since it's not saved anywhere. 310 phx15077 polled_vip_mpx uses the tally of the first buffer in the chain instead of the current buffer when deciding if the chain contains the end of the message; see the TR for details. 308 phx14893 phx16578 tty_util$find_char checks for 8-bit characters before checking for successful conversion, and therefore doesn't work properly for 256-char tables. 306 phx13162 dn355 should check the baud rate provided by the FNP for validity, instead of cheerfully using it as an array index. If it's garbage, it can cause a bounds fault in wired code. 304 phx14694 online_dump_fnp always gives the FNP tag as "a". 300 phx13895 phx14047 tty_io_call_control_ is not very clever about what orders are acceptable and what ones shold be rejected. See the TRs for details. 299 phx14463 set_tty requires that framing characters be set by a call previous to the one that sets blk_xfer mode; if a user attempts to set both in the same call, he gets a (confusing) error_table_$bad_mode. Either set_tty should be changed to figure out the correct ordering, or the documentation should be updated to warn users of this dependency. 298 tandd_attach followed by release_channel without any COLTS activity in between leaves the channel unusable because no hangup signal ever comes from the FNP. 296 phx14118 sample_time request to debug_fnp with no argument prints 2**18-T instead of T because it doesn't realize that the FNP's version is negative. 292 phx14091 If system_comm_meters is called before ANY space allocation activities have happened, it gets zerodivide calculating the average space used for input, output, and control. 289 phx14075 phx14888 Starting with MCS 6.0, it's fairly easy for the cumulative space available in a large FNP (.mspav) to exceed 2**35; this causes it to wrap, and appear negative. Because of the way the formatting routines used by mcs_meters_ work, this results in an apparently positive (but small) "average space available" and an equally small but negative "% of pool available" to be displayed. Similar problem exists with cumulative idle counter, and probably some other meters as well. Solution involves a scheme whereby certain (all?) cumulative meters only get updated every N times, which may be tricky. 286 phx13597 polled_vip_tables gets confused if more than 3 successive NAKs occur; see the TR for details. 283 phx13600 channel_comm_meters gives a bogus error message, apparently including an uninitialized channel name, if called with a control arg but no channel name. 279 phx13241 map355 doesn't work if source is in process directory because of access problems in using manipulate_pathname_. 277 phx13076 Rapid-fire orders that require FNP action can result in the FNP mailbox getting full and delay queue entries start to fill tty_buf. 270 phx12668 tty_$get_line may return a partial line and a zero error code in no_block mode. it should return an error code along with the partial line ( a new code probably has to be invented -- see the TR). 269 phx17824 if status processing falls behind in such a way that a TRO is handled after the control tables have restarted output, the ICWs get clobbered and a fresh TRO is forced. This can go on forever. In conjunction with bug 268, it can also cause buffers with NLs in them to pile up on the t.ocur chain until the FNP runs out of space. This probably can't be fixed without major overhaul in hsla_man. 268 phx17824 Since tstwrt can't tell prepnl buffers from other kinds of output, a prepnl while there's already a prepnl buffer on the t.ocur chain will cheerfully add another one. Maybe a TIB flag and/or a buffer flag could be used to prevent this. 258 phx11450 If interrupts come in faster than the scheduler can dispatch them (as from a badly malfunctioning HSLA channel) an overflow can occur in the scheduler trying to keep count of pending interrupts. 254 phx12056 tty_ returns error_table_$not_open rather than error_table_$undefined_order_request if an unrecognized order is given before the switch is opened. 244 11661 bstat request of db_fnp needs to be reworked 242 11545 g115_tables appears not to meter most output messages 241 11505 multiplexers should zero their saved meters upon allocation 239 phx11423 phx16077 phx16291 phx14552 if tty_write subdivides the given output string, and then the remainder reduces to 0 characters (for example, as a result of edited mode), the process blocks indefinitely because no send_output ever comes back 238 11403 control sequences can make the FNP think the column position is very large, so that a newline can generate enough delays to overflow the echo buffer, thereby losing the echoed LF. 236 8192 all pending output for a 3270 channel is discarded if a WACK is received 235 channel_comm_meters on a multiplexer that has never been loaded gets error_table_$io_no_permission because lcte.channel_type is 0. get_mcm_meters should check lcte.initialized and return some informative code if it's off. 233 10977 adbyte and cvaddr do not deal properly with addresses beyond the first 32 words of the TIB extension 232 10959 chstr macros takes some args as octal and some as decimal because of use of set pseudo-op. 231 phx10304 phx12795 can_type=replace doesn't work right if input contains tabs and doesn't start at left margin 229 9951 frame begin/end or flow control characters greater than 177 cause hsla_man to store status character beyond the end of the CCT 219 9191 Characters in the FNP when breakall is entered aren't forwarded until another character is typed, thereby disabling type-ahead for programs that enter breakall in order to read a response. FNP should forward any pending input (with break indication) upon entering breakall. 216 8767 n_bootloads, time_last_crash, and last_tbf in CDT entries for multiplexers are not maintained. 213 8447 if line breaks come in very rapidly, hsla_man status processor gets behind, and output subop of normal write dcwlst never gets executed before quit processing overwrites current dcwlst -- t.ocur & t.ocp don't get updated properly and pre-tally-runout and dmpout try to free the same chain. 210 8223 9726 If a process gets stuck in ring 0 with a channel lock locked, attempts to bump it will make the initializer go waiting indefinitely on the lock so it can warn the user. Similarly, if a process terminates with the channel lock locked, the initializer will get stuck when it tries to recover the channel (see also suggestions 67 & 68) 206 8014 hangup order doesn't work on channel with suspended output because control_tables won't look for hangup order until terminate status comes back. 201 4997 cv_cmf does not several global keywords (such as Answerback and the flow control stuff 200 4997 cv_cmf should not be sensitive to case in multiplexer_type 194 Limit is needed on number of delay queue entries (per-channel) 193 6623 input xte status shouldn't crash FNP -- maybe mask channel, or just take it out of receive 177 if two or more channels need space, they can take turns indefinitely sending each other space_available interrupts when they dequeue their own (assuming that the space is insufficient and that they make fresh needs_space calls each time). 174 5266 6699 In block acknowledgement mode, end-of-block characters inserted in the middle of escape sequences make both the escape sequence and the end-of-block unrecognizable. 173 fnp_multiplexer$set_modes sends mailboxes for modes that check_modes would have rejected, e.g. echoplex to 2741 (can happen if "init" specified) 135 If booting an FNP that hadn't crashed (as at system startup after a Multics crash), an interrupt while gicb is being loaded can cause "illegal opcode" with IC = 737. There does not seem to be any way to fix this. Rebooting the FNP works. 125 tty_write translates EOP sentinel if a translation table is provided 123 6219 11272 If in ^ll mode, wtcb.actcol can wrap around if it exceeds 255, and appear to be equal to white_col 119 stop_fnp followed by start_fnp loses lines that were not dialed up at the time of the stop because their listen flags are turned off. dia_man must call itest for all lines on accept_calls, and some control tables modules have to be modified 106 tty_ suppresses error_table_$smallarg for modes (may be compatibility issue) 55 dn355_messages: configuration error message refers to lines file rather than CDT 52 trace call for dia i/o queue entries doesn't isolate opcode, therefore includes word count 50 1993 2421 warn * * can run out of buffers because everyone gets tty_write_forced at once 44 excess send_outputs can cause output to be done out of order (can this be prevented in dn355?) 27 hsla_man does not recover properly if channel stops switching ICWs: sffcoi doesn't get corrected, buffer gets freed out of middle of chain 16 booting with HSLA 0 and HSLA 2 but not HSLA 1: IOM channel for HSLA 2 ends up masked (load_fnp_ missets .crnhs and init believes it); same thing happens if HSLA N has channels configured but HSLA N-1 doesn't 15 can't boot FNP with several LSLAs and no HSLAs unless HWCM space is reserved for one HSLA (store fault in init while initializing LSLA 2) 7 replayed input may not appear until after the output that it generated (this may be hard to fix; should we never send input before replaying it?) 6 tabecho doesn't work right when terminal echoes 1 or more spaces for tab 2 Last character or two of interrupted input does not always get replayed (control_tables problem) ----------------------------------------------------------- Historical Background This edition of the Multics software materials and documentation is provided and donated to Massachusetts Institute of Technology by Group BULL including BULL HN Information Systems Inc. as a contribution to computer science knowledge. This donation is made also to give evidence of the common contributions of Massachusetts Institute of Technology, Bell Laboratories, General Electric, Honeywell Information Systems Inc., Honeywell BULL Inc., Groupe BULL and BULL HN Information Systems Inc. to the development of this operating system. Multics development was initiated by Massachusetts Institute of Technology Project MAC (1963-1970), renamed the MIT Laboratory for Computer Science and Artificial Intelligence in the mid 1970s, under the leadership of Professor Fernando Jose Corbato. Users consider that Multics provided the best software architecture for managing computer hardware properly and for executing programs. Many subsequent operating systems incorporated Multics principles. Multics was distributed in 1975 to 2000 by Group Bull in Europe , and in the U.S. by Bull HN Information Systems Inc., as successor in interest by change in name only to Honeywell Bull Inc. and Honeywell Information Systems Inc. . ----------------------------------------------------------- Permission to use, copy, modify, and distribute these programs and their documentation for any purpose and without fee is hereby granted,provided that the below copyright notice and historical background appear in all copies and that both the copyright notice and historical background and this permission notice appear in supporting documentation, and that the names of MIT, HIS, BULL or BULL HN not be used in advertising or publicity pertaining to distribution of the programs without specific prior written permission. Copyright 1972 by Massachusetts Institute of Technology and Honeywell Information Systems Inc. Copyright 2006 by BULL HN Information Systems Inc. Copyright 2006 by Bull SAS All Rights Reserved