A critical bug in “gp_test” has been uncovered by staff at CTCC. This bug has existed for many years since the introduction of the “immediate” mode timeout which is specified by a negative timeout value such as “-1[sec]”. The negative timeout means that the test mode has no countdown clock and the mode actions will be executed as fast as the CPU can execute them before proceeding to the next mode (usually less than 1[ms])
When “gp_test” is in the process of executing this “immediate” mode, it will not respond to some of the events that are specified in @GLOBAL_EVENTS, @REGISTERED_EVENTS, @UNIVERSAL_EVENTS, and @UNIVERSAL_REGISTERED_EVENTS. Exceptions to this are the events transmitted by the “adv”, “idle”, “hold”, “release”, “suspend”, and “gp_stop” commands. However, other events such as the commonly used “abort_limit” and “emergency” events will be ignored during this very short time window.
If the test procedure contains a few “immediate” modes in a loop that takes several seconds or minutes to execute, the probability of missing one of these critical events will be extremely small. This is why the bug has not been discovered before now. However, if the test procedure contains a loop that consists of modes that are all specified as “immediate”, then gp_test will be guaranteed to miss one of these events if it occurs during the execution of that loop.
This issue should only be of concern for procedures which have specifications that attach to events such as “abort_limit” and “emergency”. This is usually only the “test” instance of “gp_test”. Other instances which manage auxiliary systems such as smoke meters, etc., generally don’t connect to “abort_limit” or “emergency”, so the use of “immediate” modes won’t cause an issue.
- If you have test procedures which manage the engine and contain some “immediate” modes, there is a slight risk of missing a critical event such as “abort_limit” or “emergency”.
- If you have test procedures which contain loops consisting entirely of a sequence of “immediate” modes, these critical events will be missed while executing those loops.
- Upgrade to cyflex.6.2.17
- Install an experimental version of gp_test which contains the fix. Contact Jennifer Schuck to obtain the experimental version.