Opened 8 years ago

Closed 5 years ago

#124 closed defect (fixed)

GTSS crashes on file access.

Reported by: charles.unix.pro@… Owned by: Eric Swenson
Priority: major Milestone: MR12.7
Component: Unbundled Library Version:
Keywords: gtss Cc:

Description

gtss
GTSS 4JS3 (4.0)
*old MRGD
<50>FILE MRGD -- NONEXISTENT
*bye
r 18:50 0.280 7

gtss
GTSS 4JS3 (4.0)
*system basic
*10 print "Multics Rulez, GCOS Droolz"
*run

Multics Rulez, GCOS Droolz

ready
*save NRGD

Error: conversion condition by any_to_any_$formline_|6213
(>system_library_1>bound_library_wired_)
onsource = "chain", onchar = "c"
Invalid character follows a numeric field.
system handler for error returns to command level
r 18:50 0.542 80 level 2

probe
Condition conversion raised at formline_|53565 (level 16).
stack long

23 command_processor_|2101 (>sl1>bound_multics_bce_|2101) (pl1)
22 release_stack|554 (>sss>bound_command_loop_|34522) (pl1)
21 unclaimed_signal|177 (>sss>bound_command_loop_|35521) (pl1)
20 wall|2724 (>sl1>bound_error_handlers_|2724) (pl1)
19 any_other.2|426 (>sss>bound_process_init_|426) (pl1)
18 wall|2671 (>sl1>bound_error_handlers_|2671) (pl1) error
17 any_other.2|426 (>sss>bound_process_init_|426) (pl1)
16 formline_|50471 (>sl1>bound_library_wired_|53565) conversion
15 general_rs|1147 (>sl1>bound_library_wired_|16621) (pl1)
14 com_err_|573 (>sl1>bound_library_1_|26443) (pl1)
13 open|6035 (>unb>bound_gcos_tss_|252745) (pl1)
12 gtss_ios_open_|1226 (>unb>bound_gcos_tss_|244306) (pl1)
11 gtss_filact_funct04_|1032 (>unb>bound_gcos_tss_|204150) (pl1)
10 gtss_drl_filact_|2247 (>unb>bound_gcos_tss_|106413) (pl1)

9 gtss_derail_processor_|2570 (>unb>bound_gcos_tss_|57432) (pl1)
8 <<NO ENTRYPOINT>>|2753 (>pdd>!BMBDnFQbBBBBBB>!BBBKMPLWMpZgNM.temp.0324|2753) (Other) derail
7 gtss_run_subsystem_|1503 (>unb>bound_gcos_tss_|24605) (pl1)
6 exec_primitive|3673 (>unb>bound_gcos_tss_|21127) (pl1)
5 gtss_interp_prim_|2371 (>unb>bound_gcos_tss_|17625) (pl1)
4 gtss|1625 (>unb>bound_gcos_tss_|7563) (pl1)
3 command_processor_|2101 (>sl1>bound_multics_bce_|2101) (pl1)
2 listen_|554 (>sss>bound_command_loop_|34522) (pl1)
1 initialize_process_|704 (>sss>bound_process_init_|704) (pl1)

Change History (8)

comment:1 by canthony, 8 years ago

Rebuilding gtss_fast_library_ under 12.6f appears to fix the issue.

comment:2 by canthony, 8 years ago

# Rebuild bound_gcos_tss, including edit of trailing NUL
new_proc
cd bound_gcos_tss_
cwd bound_gcos_tss_
ac x >library_dir_dir>system_library_unbundled>source>bound_gcos_tss_.1.s

qedx
r gtss_verify_access_.pl1
$p

end;\000

d
i

end;

\f
w
q

pl1 ([segs *.pl1]) -ot
alm ([segs *.alm])
cds ([segs *.cds])
dl *.pl1 *.alm *.cds
cp >library_dir_dir>system_library_unbundled>object>bound_gcos_tss_.1.archive
ac ud bound_gcos_tss_.1 [segs *]
ac x >library_dir_dir>system_library_unbundled>source>bound_gcos_tss_.2.s
pl1 ([segs *.pl1]) -ot
alm ([segs *.alm])
cds ([segs *.cds])
dl *.pl1 *.alm *.cds
cp >library_dir_dir>system_library_unbundled>object>bound_gcos_tss_.2.archive
ac ud bound_gcos_tss_.2 [segs *]
bind bound_gcos_tss_.1 bound_gcos_tss_.2

# Test rebuilt. Copy some files gtss expects to find in the same directory it is in.
cp >unb>GTSS
cp >unb>gtss_fast_library_
gtss
GTSS 4JS3 (4.0)
*10 print "Multics Rulez, GCOS Droolz"
*save MRGD
DATA SAVED-MRGD
*bye
r 05:07 0.673 17

gtss
GTSS 4JS3 (4.0)
*old MRGD
*system basic
*run

Multics Rulez, GCOS Droolz

ready
*bye

comment:3 by Eric Swenson, 5 years ago

I just checked, and there doesn't appear to be a NUL character at the end of gtss_verify_access_.pl1. I don't think this fix will resolve the issue.

comment:4 by Eric Swenson, 5 years ago

Hmm..... I just followed a subset of the steps, above, and it worked. However, I didn't see any NUL character at the end of gtss_verify_access_.pl1. I checked in both qedx and emacs. It may be that simply rebinding fixes the issue. I'll investigate further.

comment:5 by Eric Swenson, 5 years ago

Ok. You don't have to edit this segment at all. All you have to do is recompile it and rebind.

comment:6 by Eric Swenson, 5 years ago

So recompiling and rebinding is a red herring. It doesn't really fix the problem. Even after doing this, I can get the error. The real culprit appears to be a bad call to com_err_ in gtss_mcfc_.pl1.

See the code, below:

/* Could not lock. */
               if c = error_table_$lock_wait_time_exceeded then do;
                    if db_mcfc then
                         call com_err_ (c, ENTRY, "(^a ^i)", en, e);
                    return ("1"b);
               end;
               if c = error_table_$locked_by_this_process then do;
                    call com_err_ (c, ENTRY,
                         "BUG? Will not proceed (^a ^i).", en, e);
                    signal cond (gtss_fail);
                    return ("1"b);
               end;
               call com_err_ (c, ENTRY,
                    "UNEXPECTED LOCK ERROR? (^1 ^i)", en, e);
               signal cond (gtss_fail);
               return ("1"b);

In the first two calls, we use the ioa control string "a". In the last one, we use the bogus value "1". This is the root of the issue.

comment:8 by Eric Swenson, 5 years ago

Milestone: MR12.7
Resolution: fixed
Status: newclosed
Note: See TracTickets for help on using tickets.