﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc
241	help_listen_util_$display_prompt loops on vt102 terminal type in command: help ls	Gary Dixon	Gary Dixon	"If logged into Multics without using the video system (using tty_ instead of window_io_), with terminal type set to vt102 (24 80-character lines per screen), the algorithms used by help_ to generate prompts asking about display of the next info seg paragraphs can enter an infinite loop, hanging the terminal output until a quit condition occurs (telnet ""send break"" request is sent).

When displaying output from the command:  help ls

the expected output displaying contents of list.info is produced up to the point shown in the failure scenario log below.


{{{
help ls
...
Control arguments (entry type) (6 more).
  More help?  y

-link, -lk
   list links.
-all, -a
   list information about all entry types in the following order:
   segments, MSFs, DM files, directories, and links.

Control arguments (column) (16).
  More help?  y

Control arguments (column): (see also ""Notes on columns"" below)
-date_time_entry_modified, -dtem
   print date-time-entry-modified in the modification-date column.
-date_time_contents_modified, -dtcm
   print date-time-contents-modified in the modification-date column.
-date_time_used, -dtu
   print date-time-used column.
-mode, -md
   print mode column.
-record, -rec
   print records used in size column.
-length, -ln
   print length computed from bit count in size column.
-name, -nm
   print names column.



telnet> send break
QUIT
r 08:22 49.038 77 level 2

ts -bf
quit condition:
234|10160   help_listen_util_$display_prompt|3363 (bound_info_rtns_|70037)  in o
\cperator cat_realloc_chars
234|5640	  ssu_listen_$listen|377 (bound_ssu_|2545)
234|4440	  help_$help_|6335 (bound_info_rtns_|60253)
234|3640	  help$help|4340 (bound_info_rtns_|51366)
234|2700	  command_processor_$command_processor_|2101 (bound_multics_bce_|2101)
234|2400	  listen_$listen_|554 (bound_command_loop_|34522)
234|2000	  initialize_process_$initialize_process_|704 (bound_process_init_|704
\c)
r 08:23 0.224 22 level 2

stty -all
Type: VT102
Modes: ll80,pl23,can_type=replace,^edited,tabs,can,esc,erkl,^rawi,^rawo,^red,^ve
\crtsp,crecho,lfecho,^tabecho,hndlquit,fulldpx,echoplex,^capo,^replay,^polite,^c
\ctl_char,^blk_xfer,^breakall,scroll,^prefixnl,^wake_tbl,^iflow,^oflow,^no_outp,
\c^8bit,^oddp.
Erase: #,  Kill: @
Frame_begin: \000, Frame_end: \000
Delays: vert_nl 0, horz_nl  0.500, const_tab 0, var_tab  0.000, backspace 0, vt_
\cff 0
output suspend: \023; output resume: \021
r 08:30 0.023 0 level 2

pat
cl_save_!BBBKQKmQMhWlZc
     syn_ user_i/o -inh close get_line get_chars
cl_save_!BBBKQKmQMhWjjn
     syn_ user_i/o -inh close get_line get_chars
cl_save_!BBBKQKmQMhWgPC
     syn_ user_i/o -inh close put_chars
error_output	syn_ user_i/o -inh close get_line get_chars
user_output	syn_ user_i/o -inh close get_line get_chars
user_input	syn_ user_i/o -inh close put_chars
user_i/o		tty_ -login_channel -suppress_dial_manager
	stream_input_output
r 08:30 0.018 0 level 2

}}}


This infinite loop is not encountered when using a terminal type supporting longer lines and more lines per page (such as VT102_132C, VT102_132C_50L, VT102_132C_78L).

This problem was introduced by the new help_ implementation in MR12.7.

The looping can occur at several places in the help_listen_util_$display_prompt code.  Besides the offset shown in the trace_stack output above, it was also seen at:


{{{
ts
quit in help_listen_util_$display_prompt|5352
(>system_library_standard>bound_info_rtns_|72026)
}}}

Code in the looping do-group calls an internal subroutine to determine if more info seg paragraphs can be described in the current prompt.  So offsets within a fairly wide range of code can be involved in this infinite loop.
"	defect	closed	major	MR12.8	Standard Library	MR12.7	fixed		
