{"id":7747,"date":"2019-09-30T13:11:23","date_gmt":"2019-09-30T13:11:23","guid":{"rendered":"https:\/\/cyflexdoc.wpengine.com\/?p=7747"},"modified":"2019-09-30T13:11:23","modified_gmt":"2019-09-30T13:11:23","slug":"critical-bug-found-in-gp_test-within-cyflex-6-2-16-and-cyflex-6-2-17","status":"publish","type":"post","link":"https:\/\/cyflex.com\/index.php\/critical-bug-found-in-gp_test-within-cyflex-6-2-16-and-cyflex-6-2-17\/","title":{"rendered":"Critical bug found in gp_test within cyflex.6.2.16 and cyflex.6.2.17"},"content":{"rendered":"<p>A critical bug in \u201cgp_test\u201d has been uncovered by staff at CTCC.\u00a0 This bug has existed for many years since the introduction of the \u201cimmediate\u201d mode timeout which is specified by a negative timeout value such as \u201c-1[sec]\u201d.\u00a0 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])<\/p>\n<p>When \u201cgp_test\u201d is in the process of executing this \u201cimmediate\u201d mode, it will not respond to some of the events that are specified in @GLOBAL_EVENTS, @REGISTERED_EVENTS, @UNIVERSAL_EVENTS, and @UNIVERSAL_REGISTERED_EVENTS.\u00a0 Exceptions to this are the events transmitted by the \u201cadv\u201d, \u201cidle\u201d, \u201chold\u201d, \u201crelease\u201d, \u201csuspend\u201d, and \u201cgp_stop\u201d commands.\u00a0 However, other events such as the commonly used \u201cabort_limit\u201d and \u201cemergency\u201d events will be ignored during this very short time window.<\/p>\n<p>If the test procedure contains a few \u201cimmediate\u201d 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.\u00a0 This is why the bug has not been discovered before now.\u00a0 However, if the test procedure contains a loop that consists of modes that are all specified as \u201cimmediate\u201d, then gp_test will be guaranteed to miss one of these events if it occurs during the execution of that loop.<\/p>\n<p>This issue should only be of concern for procedures which have specifications that attach to events such as \u201cabort_limit\u201d and \u201cemergency\u201d. \u00a0This is usually only the \u201ctest\u201d instance of \u201cgp_test\u201d.\u00a0 Other instances which manage auxiliary systems such as smoke meters, etc., generally don\u2019t connect to \u201cabort_limit\u201d or \u201cemergency\u201d, so the use of \u201cimmediate\u201d modes won\u2019t cause an issue.<\/p>\n<p>BOTTOM LINE:<\/p>\n<ol>\n<li>If you have test procedures which manage the engine and contain some \u201cimmediate\u201d modes, there is a slight risk of missing a critical event such as \u201cabort_limit\u201d or \u201cemergency\u201d.<\/li>\n<li>If you have test procedures which contain loops consisting entirely of a sequence of \u201cimmediate\u201d modes, these critical events will be missed while executing those loops.<\/li>\n<\/ol>\n<p>SOLUTION:<\/p>\n<ol>\n<li>Upgrade to cyflex.6.2.17<\/li>\n<li>Install an experimental version of gp_test which contains the fix.\u00a0 Contact Jennifer Schuck to obtain the experimental version.<\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>A critical bug in \u201cgp_test\u201d has been uncovered by staff at CTCC.\u00a0 This bug has existed for many years since the introduction of the \u201cimmediate\u201d mode timeout which is specified by a negative timeout value such as \u201c-1[sec]\u201d.\u00a0 The negative timeout means that the test mode has no countdown clock and the mode actions will [&hellip;]<\/p>\n","protected":false},"author":47,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[],"class_list":["post-7747","post","type-post","status-publish","format-standard","hentry","category-did-you-know"],"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/cyflex.com\/index.php\/wp-json\/wp\/v2\/posts\/7747","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cyflex.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cyflex.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cyflex.com\/index.php\/wp-json\/wp\/v2\/users\/47"}],"replies":[{"embeddable":true,"href":"https:\/\/cyflex.com\/index.php\/wp-json\/wp\/v2\/comments?post=7747"}],"version-history":[{"count":0,"href":"https:\/\/cyflex.com\/index.php\/wp-json\/wp\/v2\/posts\/7747\/revisions"}],"wp:attachment":[{"href":"https:\/\/cyflex.com\/index.php\/wp-json\/wp\/v2\/media?parent=7747"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cyflex.com\/index.php\/wp-json\/wp\/v2\/categories?post=7747"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cyflex.com\/index.php\/wp-json\/wp\/v2\/tags?post=7747"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}