FIS GT.M V6.2-002A provides the following timely remediation:
$SELECT() works correctly in several scenarios where it
previously did not.
- Effective V6.2-002, compiling nested calls to $SELECT() with
both environment variables gtm_boolean and gtm_side_effects
undefined or set to zero (0) could occasionally terminate
processes with a segmentation violation (SIG-11).
- Effective V6.2-002, compiling nested calls to $SELECT() with
gtm_boolean set to 1 or 2 could cause a GTMASSERT2.
- Effective V6.2-002, $SELECT() incorrectly maintained
$REFERENCE and the naked reference in some cases.
- Effective V6.0-001, even with gtm_side_effects set to one
(1) to specify that the code has side effects, GT.M would
evaluate $SELECT() out of order. KILL x WRITE
x+$SELECT(1:$INCREMENT(x)) is an example of code with side
effects that did not maintain standard order of evaluation
even when compiled with gtm_side_effects set to 1.
Although the above cases describe the core of the previous
behavior, it is likely that there are cases that overlap the above
in ways that are not obvious. When gtm_boolean and
gtm_side_effects are undefined (or set to zero), GT.M assumes that
the code has no side effects other than $REFERENCE and
indirection, and can, and does, rearrange computation to improve
performance: the evaluation of operands in expressions, the order
in which function call parameters are evaluated, etc. In order to
be more consistent with other optimizations, when neither
gtm_boolean nor gtm_side_effects are set to non-zero values, GT.M
V6.2-002A rearranges computation to evaluate a $SELECT() that
appears within a Boolean expression only when its arguments
contain a global variable or indirection, where previously it
always did. If such a $SELECT() has an argument containing an
extrinsic ($$) function call with side effects, results on
V6.2-002A may differ from those on previous GT.M releases. Note:
as the rearranging can change from release to release, you may
encounter unexpected and varying results if you compile
application code that has side effects with environment variables
that tell GT.M that it has no side effects. Where code contains
side-effects, FIS strongly recommends compiling it with
gtm_side_effects and gtm_boolean set to 1. (GTM-8376)
If you are using V6.2-002, or considering an upgrade to V6.2-002,
please consider an upgrade to V6.2-002A. Thank you for using GT.M.
Regards
-- Bhaskar
--
GT.M - Rock solid. Lightning fast. Secure. Pick any three.
_____________
The information contained in this message is proprietary and/or confidential. If you are not the intended recipient, please: (i) delete the message and all copies; (ii) do not disclose, distribute or use the message in any manner; and (iii) notify the sender immediately. In addition, please be aware that any message addressed to our domain is subject to archiving and review by persons other than the intended recipient. Thank you.