Please enable JavaScript to view this site.

A-Shell Development History

Compiler fix (edit 649) eliminates a window of opportunity for ambiguity between references to top-level structure variables (generally in parameter lists) and dynamic overlays. For certain structures containing &hfffffffe at an offset of 8 from the start of the structure, the runtime variable interpreter was misinterpreting the structure as a dynamic overlay, resulting in the passing of garbage data in place of the structure—at best—or a segmentation fault. The problem stemmed from a historical decision to use a bit in the RUN file variable map descriptor area to indicate structures, which was useful during compilation but never actually used at runtime. Once all the available bits in the variable type word got used up, we decided to "multiplex" that bit with the dynamic overlay bit, mainly in order to avoid a change to RUN hash of existing programs. But at this point, a change in the RUN hash seems less objectionable than the risk of ambiguity, so we're biting the bullet and just doing it.

Note that the only known case of the ambiguity causing a problem is in the new INFLD ST_INFCLRX structure when the dbrgb field was set to -2, but the potential for other such ambiguities was wide open. A recompilation is therefore recommended for any program using defined structures. This recompiled RUN will be free of the potential problem while remaining compatible with all previous versions of the runtime system.

Also note that the 6.1.1371.0 runtime reduces the chance of ambiguity, even without recompiling, by checking for another signature condition. It fixes the problem with ST_INFCLRX, but still leaves the window open a crack, so the recompilation suggestion remains the best one.