Opened 8 years ago
Closed 5 years ago
#124 closed defect (fixed)
GTSS crashes on file access.
| Reported by: | 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 , 8 years ago
comment:2 by , 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 , 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 , 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 , 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 , 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:7 by , 5 years ago
comment:8 by , 5 years ago
| Milestone: | → MR12.7 |
|---|---|
| Resolution: | → fixed |
| Status: | new → closed |

Rebuilding gtss_fast_library_ under 12.6f appears to fix the issue.