Opened 5 years ago

Closed 5 years ago

Last modified 3 years ago

#241 closed defect (fixed)

help_listen_util_$display_prompt loops on vt102 terminal type in command: help ls

Reported by: Gary Dixon Owned by: Gary Dixon
Priority: major Milestone: MR12.8
Component: Standard Library Version: MR12.7
Keywords: Cc:

Description

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.

Change History (5)

comment:1 by Gary Dixon, 5 years ago

https://s3.amazonaws.com/eswenson-multics/public/mcrs/MCR10094.pdf was created to propose a repair for this problem.

Last edited 5 years ago by Gary Dixon (previous) (diff)

comment:2 by Gary Dixon, 5 years ago

Owner: changed from Eric Swenson to Gary Dixon
Status: newaccepted

comment:3 by Eric Swenson, 5 years ago

Milestone: MR12.8

comment:4 by Eric Swenson, 5 years ago

Resolution: fixed
Status: acceptedclosed

comment:5 by Eric Swenson, 3 years ago

Fixed with MR12.8-1003.

Note: See TracTickets for help on using tickets.