<p>neels has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/libosmocore/+/15677">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">add osmo_fsm_set_dealloc_ctx(), to help with use-after-free<br><br>This is a simpler and more general solution to the problem so far solved by<br>osmo_fsm_term_safely(true).<br><br>The aim is to defer talloc_free() until back in the main loop.<br><br>Background: I discovered an osmo-msc use-after-free crash from an invalid<br>message, caused by this pattern:<br><br>void event_action()<br>{<br>       osmo_fsm_inst_dispatch(foo, FOO_EVENT, NULL);<br>       osmo_fsm_inst_dispatch(bar, BAR_EVENT, NULL);<br>}<br><br>Usually, FOO_EVENT takes successful action, and afterwards we also notify bar<br>of another event. However, in this particular case FOO_EVENT caused failure,<br>and the immediate error handling directly terminated and deallocated bar.<br>In such cases, dispatching BAR_EVENT causes a use-after-free; this constituted<br>a DoS vector just from sending messages that fail to validate to osmo-msc.<br><br>Instead, when this is enabled, we do not deallocate 'foo' until event_action()<br>has returned back to the main loop.<br><br>Test: duplicate fsm_dealloc_test.c using this, and print the number of items<br>deallocated in each test loop, to ensure the feature works. We also verify that<br>the deallocation safety works simply by fsm_dealloc_test.c not crashing.<br><br>We should probably follow up with a condition in osmo_fsm_inst_dispatch() that<br>avoids dispatching events to FSM instances that are already terminated, like<br>'if (fi->proc.terminated) return;'. Not in this patch.<br><br>Change-Id: Ief4dba9ea587c9b4aea69993e965fbb20fb80e78<br>---<br>M include/osmocom/core/fsm.h<br>M src/fsm.c<br>M tests/fsm/fsm_dealloc_test.c<br>M tests/fsm/fsm_dealloc_test.err<br>4 files changed, 3,511 insertions(+), 29 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/77/15677/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/include/osmocom/core/fsm.h b/include/osmocom/core/fsm.h</span><br><span>index 1701c45..269befa 100644</span><br><span>--- a/include/osmocom/core/fsm.h</span><br><span>+++ b/include/osmocom/core/fsm.h</span><br><span>@@ -122,6 +122,7 @@</span><br><span> void osmo_fsm_log_addr(bool log_addr);</span><br><span> void osmo_fsm_log_timeouts(bool log_timeouts);</span><br><span> void osmo_fsm_term_safely(bool term_safely);</span><br><span style="color: hsl(120, 100%, 40%);">+void osmo_fsm_set_dealloc_ctx(void *ctx);</span><br><span> </span><br><span> /*! Log using FSM instance's context, on explicit logging subsystem and level.</span><br><span>  * \param fi  An osmo_fsm_inst.</span><br><span>diff --git a/src/fsm.c b/src/fsm.c</span><br><span>index c886351..0e411ff 100644</span><br><span>--- a/src/fsm.c</span><br><span>+++ b/src/fsm.c</span><br><span>@@ -93,6 +93,8 @@</span><br><span> static bool fsm_log_timeouts = false;</span><br><span> /*! See osmo_fsm_term_safely(). */</span><br><span> static bool fsm_term_safely_enabled = false;</span><br><span style="color: hsl(120, 100%, 40%);">+/*! See osmo_fsm_set_dealloc_ctx() */</span><br><span style="color: hsl(120, 100%, 40%);">+static void *fsm_dealloc_ctx = NULL;</span><br><span> </span><br><span> /*! Internal state for FSM instance termination cascades. */</span><br><span> static __thread struct {</span><br><span>@@ -104,6 +106,16 @@</span><br><span>  void *collect_ctx;</span><br><span> } fsm_term_safely;</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/*! Internal call to free an FSM instance, which redirects to the context set by osmo_fsm_set_dealloc_ctx() if any.</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span style="color: hsl(120, 100%, 40%);">+static void fsm_free_or_steal(void *talloc_object)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+ if (fsm_dealloc_ctx)</span><br><span style="color: hsl(120, 100%, 40%);">+          talloc_steal(fsm_dealloc_ctx, talloc_object);</span><br><span style="color: hsl(120, 100%, 40%);">+ else</span><br><span style="color: hsl(120, 100%, 40%);">+          talloc_free(talloc_object);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /*! specify if FSM instance addresses should be logged or not</span><br><span>  *</span><br><span>  *  By default, the FSM name includes the pointer address of the \ref</span><br><span>@@ -139,11 +151,9 @@</span><br><span> </span><br><span> /*! Enable safer way to deallocate cascades of terminating FSM instances.</span><br><span>  *</span><br><span style="color: hsl(0, 100%, 40%);">- * For legacy compatibility, this is disabled by default. In newer programs / releases, it is recommended to enable this</span><br><span style="color: hsl(0, 100%, 40%);">- * feature during main() startup, since it greatly simplifies deallocating child, parent and other FSM instances without</span><br><span style="color: hsl(0, 100%, 40%);">- * running into double-free or use-after-free scenarios. When enabled, this feature changes the order of logging, which</span><br><span style="color: hsl(0, 100%, 40%);">- * may break legacy unit test expectations, and changes the order of deallocation to after the parent term event is</span><br><span style="color: hsl(0, 100%, 40%);">- * dispatched.</span><br><span style="color: hsl(120, 100%, 40%);">+ * Note, using osmo_fsm_set_dealloc_ctx() is a more general solution to this same problem.</span><br><span style="color: hsl(120, 100%, 40%);">+ * Particularly, in a program using osmo_select_main_ctx(), the simplest solution to avoid most use-after-free problems</span><br><span style="color: hsl(120, 100%, 40%);">+ * from FSM instance deallocation is using osmo_fsm_set_dealloc_ctx(OTC_SELECT).</span><br><span>  *</span><br><span>  * When enabled, an FSM instance termination detects whether another FSM instance is already terminating, and instead of</span><br><span>  * deallocating immediately, collects all terminating FSM instances in a talloc context, to be bulk deallocated once all</span><br><span>@@ -155,6 +165,9 @@</span><br><span>  *</span><br><span>  * For illustration, see fsm_dealloc_test.c.</span><br><span>  *</span><br><span style="color: hsl(120, 100%, 40%);">+ * When enabled, this feature changes the order of logging, which may break legacy unit test expectations, and changes</span><br><span style="color: hsl(120, 100%, 40%);">+ * the order of deallocation to after the parent term event is dispatched.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span>  * \param[in] term_safely  Pass true to switch to safer FSM instance termination behavior.</span><br><span>  */</span><br><span> void osmo_fsm_term_safely(bool term_safely)</span><br><span>@@ -162,6 +175,31 @@</span><br><span>     fsm_term_safely_enabled = term_safely;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/*! Instead of deallocating FSM instances, move them to the given talloc context.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * It is the caller's responsibility to clear this context to actually free the memory of terminated FSM instances.</span><br><span style="color: hsl(120, 100%, 40%);">+ * Make sure to not talloc_free(ctx) itself before setting a different osmo_fsm_set_dealloc_ctx(). To clear a ctx</span><br><span style="color: hsl(120, 100%, 40%);">+ * without the need to call osmo_fsm_set_dealloc_ctx() again, rather use talloc_free_children(ctx).</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * For example, to defer deallocation to the next osmo_select_main_ctx() iteration, set this to OTC_SELECT.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * Deferring deallocation is the simplest solution to avoid most use-after-free problems from FSM instance deallocation.</span><br><span style="color: hsl(120, 100%, 40%);">+ * This is a simpler and more general solution than osmo_fsm_term_safely().</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * To disable the feature again, pass NULL as ctx.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * Both osmo_fsm_term_safely() and osmo_fsm_set_dealloc_ctx() can be enabled at the same time, which will result in</span><br><span style="color: hsl(120, 100%, 40%);">+ * first collecting deallocated FSM instances in fsm_term_safely.collect_ctx, and finally reparenting that to the ctx</span><br><span style="color: hsl(120, 100%, 40%);">+ * passed here. However, in practice, it does not really make sense to enable both at the same time.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * \param ctx[in]  Instead of talloc_free()int, talloc_steal() all future deallocated osmo_fsm_inst instances to this</span><br><span style="color: hsl(120, 100%, 40%);">+ *                 ctx. If NULL, go back to talloc_free() as usual.</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span style="color: hsl(120, 100%, 40%);">+void osmo_fsm_set_dealloc_ctx(void *ctx)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+   fsm_dealloc_ctx = ctx;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /*! talloc_free() the given object immediately, or once ongoing FSM terminations are done.</span><br><span>  *</span><br><span>  * If an FSM deallocation cascade is ongoing, talloc_steal() the given talloc_object into the talloc context that is</span><br><span>@@ -185,7 +223,7 @@</span><br><span> static void osmo_fsm_defer_free(void *talloc_object)</span><br><span> {</span><br><span>   if (!fsm_term_safely.depth) {</span><br><span style="color: hsl(0, 100%, 40%);">-           talloc_free(talloc_object);</span><br><span style="color: hsl(120, 100%, 40%);">+           fsm_free_or_steal(talloc_object);</span><br><span>            return;</span><br><span>      }</span><br><span> </span><br><span>@@ -412,7 +450,7 @@</span><br><span>  osmo_timer_setup(&fi->timer, fsm_tmr_cb, fi);</span><br><span> </span><br><span>     if (osmo_fsm_inst_update_id(fi, id) < 0) {</span><br><span style="color: hsl(0, 100%, 40%);">-                   talloc_free(fi);</span><br><span style="color: hsl(120, 100%, 40%);">+                      fsm_free_or_steal(fi);</span><br><span>                       return NULL;</span><br><span>         }</span><br><span> </span><br><span>@@ -529,11 +567,11 @@</span><br><span>                 * deallocate separately to avoid use-after-free errors, put it in there and deallocate all at once. */</span><br><span>              LOGPFSM(fi, "Deallocated, including all deferred deallocations\n");</span><br><span>                osmo_fsm_defer_free(fi);</span><br><span style="color: hsl(0, 100%, 40%);">-                talloc_free(fsm_term_safely.collect_ctx);</span><br><span style="color: hsl(120, 100%, 40%);">+             fsm_free_or_steal(fsm_term_safely.collect_ctx);</span><br><span>              fsm_term_safely.collect_ctx = NULL;</span><br><span>  } else {</span><br><span>             LOGPFSM(fi, "Deallocated\n");</span><br><span style="color: hsl(0, 100%, 40%);">-         talloc_free(fi);</span><br><span style="color: hsl(120, 100%, 40%);">+              fsm_free_or_steal(fi);</span><br><span>       }</span><br><span>    fsm_term_safely.root_fi = NULL;</span><br><span> }</span><br><span>diff --git a/tests/fsm/fsm_dealloc_test.c b/tests/fsm/fsm_dealloc_test.c</span><br><span>index ce49205..9a6974d 100644</span><br><span>--- a/tests/fsm/fsm_dealloc_test.c</span><br><span>+++ b/tests/fsm/fsm_dealloc_test.c</span><br><span>@@ -355,7 +355,7 @@</span><br><span>      osmo_fsm_inst_term(obj->fi, OSMO_FSM_TERM_REGULAR, NULL);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-void test_dealloc(enum objname trigger, bool by_destroy_event)</span><br><span style="color: hsl(120, 100%, 40%);">+void test_dealloc(enum objname trigger, bool by_destroy_event, void *loop_ctx)</span><br><span> {</span><br><span>     struct scene *s = scene_alloc();</span><br><span>     const char *label = by_destroy_event ? "destroy-event" : "term";</span><br><span>@@ -383,16 +383,63 @@</span><br><span>                 LOGP(DLGLOBAL, LOGL_DEBUG, "--- %d objects remain. cleaning up\n", remain);</span><br><span>        } else</span><br><span>               LOGP(DLGLOBAL, LOGL_DEBUG, "--- all deallocated.\n");</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     if (loop_ctx) {</span><br><span style="color: hsl(120, 100%, 40%);">+               fprintf(stderr, "*** loop_ctx contains %zu blocks, deallocating.\n",</span><br><span style="color: hsl(120, 100%, 40%);">+                        talloc_total_blocks(loop_ctx));</span><br><span style="color: hsl(120, 100%, 40%);">+               talloc_free_children(loop_ctx);</span><br><span style="color: hsl(120, 100%, 40%);">+       }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   /* Silently free the remaining objects. */</span><br><span>   scene_clean(s);</span><br><span style="color: hsl(120, 100%, 40%);">+       if (loop_ctx)</span><br><span style="color: hsl(120, 100%, 40%);">+         talloc_free_children(loop_ctx);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+static void trigger_tests(void *loop_ctx)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+    size_t ctx_blocks;</span><br><span style="color: hsl(120, 100%, 40%);">+    size_t ctx_size;</span><br><span style="color: hsl(120, 100%, 40%);">+      enum objname trigger;</span><br><span style="color: hsl(120, 100%, 40%);">+ int by_destroy_event;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       ctx_blocks = talloc_total_blocks(ctx);</span><br><span style="color: hsl(120, 100%, 40%);">+        ctx_size = talloc_total_size(ctx);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  for (trigger = 0; trigger < scene_size; trigger++) {</span><br><span style="color: hsl(120, 100%, 40%);">+               for (by_destroy_event = 0; by_destroy_event < 2; by_destroy_event++) {</span><br><span style="color: hsl(120, 100%, 40%);">+                     test_dealloc(trigger, (bool)by_destroy_event, loop_ctx);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+                    if (ctx_blocks != talloc_total_blocks(ctx)</span><br><span style="color: hsl(120, 100%, 40%);">+                        || ctx_size != talloc_total_size(ctx)) {</span><br><span style="color: hsl(120, 100%, 40%);">+                          talloc_report_full(ctx, stderr);</span><br><span style="color: hsl(120, 100%, 40%);">+                              OSMO_ASSERT(false);</span><br><span style="color: hsl(120, 100%, 40%);">+                   }</span><br><span style="color: hsl(120, 100%, 40%);">+             }</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+void test_osmo_fsm_term_safely()</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+   fprintf(stderr, "\n\n%s()\n", __func__);</span><br><span style="color: hsl(120, 100%, 40%);">+    osmo_fsm_term_safely(true);</span><br><span style="color: hsl(120, 100%, 40%);">+   trigger_tests(NULL);</span><br><span style="color: hsl(120, 100%, 40%);">+  osmo_fsm_term_safely(false);</span><br><span style="color: hsl(120, 100%, 40%);">+  fprintf(stderr, "\n\n%s() done\n", __func__);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+void test_osmo_fsm_set_dealloc_ctx()</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+ fprintf(stderr, "\n\n%s()\n", __func__);</span><br><span style="color: hsl(120, 100%, 40%);">+    void *dealloc_ctx = talloc_named_const(ctx, 0, "fsm_dealloc");</span><br><span style="color: hsl(120, 100%, 40%);">+      osmo_fsm_set_dealloc_ctx(dealloc_ctx);</span><br><span style="color: hsl(120, 100%, 40%);">+        trigger_tests(dealloc_ctx);</span><br><span style="color: hsl(120, 100%, 40%);">+   osmo_fsm_set_dealloc_ctx(NULL);</span><br><span style="color: hsl(120, 100%, 40%);">+       fprintf(stderr, "\n\n%s() done\n", __func__);</span><br><span> }</span><br><span> </span><br><span> int main(void)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">- enum objname trigger;</span><br><span style="color: hsl(0, 100%, 40%);">-   size_t ctx_blocks;</span><br><span style="color: hsl(0, 100%, 40%);">-      size_t ctx_size;</span><br><span style="color: hsl(0, 100%, 40%);">-        int by_destroy_event;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>        ctx = talloc_named_const(NULL, 0, "main");</span><br><span>         osmo_init_logging2(ctx, NULL);</span><br><span> </span><br><span>@@ -405,22 +452,10 @@</span><br><span> </span><br><span>       log_set_category_filter(osmo_stderr_target, DLGLOBAL, 1, LOGL_DEBUG);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-       osmo_fsm_term_safely(true);</span><br><span>  osmo_fsm_register(&test_fsm);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   ctx_blocks = talloc_total_blocks(ctx);</span><br><span style="color: hsl(0, 100%, 40%);">-  ctx_size = talloc_total_size(ctx);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-      for (trigger = 0; trigger < scene_size; trigger++) {</span><br><span style="color: hsl(0, 100%, 40%);">-         for (by_destroy_event = 0; by_destroy_event < 2; by_destroy_event++) {</span><br><span style="color: hsl(0, 100%, 40%);">-                       test_dealloc(trigger, (bool)by_destroy_event);</span><br><span style="color: hsl(0, 100%, 40%);">-                  if (ctx_blocks != talloc_total_blocks(ctx)</span><br><span style="color: hsl(0, 100%, 40%);">-                          || ctx_size != talloc_total_size(ctx)) {</span><br><span style="color: hsl(0, 100%, 40%);">-                            talloc_report_full(ctx, stderr);</span><br><span style="color: hsl(0, 100%, 40%);">-                                OSMO_ASSERT(false);</span><br><span style="color: hsl(0, 100%, 40%);">-                     }</span><br><span style="color: hsl(0, 100%, 40%);">-               }</span><br><span style="color: hsl(0, 100%, 40%);">-       }</span><br><span style="color: hsl(120, 100%, 40%);">+     test_osmo_fsm_term_safely();</span><br><span style="color: hsl(120, 100%, 40%);">+  test_osmo_fsm_set_dealloc_ctx();</span><br><span> </span><br><span>         talloc_free(ctx);</span><br><span>    return 0;</span><br><span>diff --git a/tests/fsm/fsm_dealloc_test.err b/tests/fsm/fsm_dealloc_test.err</span><br><span>index d12c5aa..973f3d4 100644</span><br><span>--- a/tests/fsm/fsm_dealloc_test.err</span><br><span>+++ b/tests/fsm/fsm_dealloc_test.err</span><br><span>@@ -1,3 +1,6 @@</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+test_osmo_fsm_term_safely()</span><br><span> DLGLOBAL DEBUG scene_alloc()</span><br><span> DLGLOBAL DEBUG test(root){alive}: Allocated</span><br><span> DLGLOBAL DEBUG test(root){alive}: Allocated</span><br><span>@@ -3250,3 +3253,3408 @@</span><br><span> DLGLOBAL DEBUG 0 (-)</span><br><span> DLGLOBAL DEBUG --- after destroy-event cascade:</span><br><span> DLGLOBAL DEBUG --- all deallocated.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+test_osmo_fsm_term_safely() done</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+test_osmo_fsm_set_dealloc_ctx()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG scene_alloc()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: is child of test(root)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: is child of test(_branch0)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: is child of test(_branch0)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: is child of test(root)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: is child of test(_branch1)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: is child of test(_branch1)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: _branch0.other[0] = other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: other.other[0] = _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: __twig0a.other[0] = other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: other.other[1] = __twig0a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: _branch1.other[0] = other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: other.other[1] = _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: __twig1a.other[0] = root</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: root.other[0] = __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG ------ before term cascade, got:</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   root</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig0a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig0b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig1b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG ---</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG --- term at root</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Terminating (cause = OSMO_FSM_TERM_REGULAR)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Terminating (cause = OSMO_FSM_TERM_PARENT)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: Terminating (cause = OSMO_FSM_TERM_PARENT)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: Removing from parent test(_branch1)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (__twig1b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: scene forgets __twig1b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig1b.cleanup(),_branch1.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (__twig1b.cleanup(),_branch1.alive(),_branch1.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[1] = __twig1b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: still exists: child[0]</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig1b.cleanup(),_branch1.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (__twig1b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 0 (-)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: Terminating (cause = OSMO_FSM_TERM_PARENT)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: Removing from parent test(_branch1)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (__twig1a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: scene forgets __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: removing reference __twig1a.other[0] -> root</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Received Event EV_OTHER_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig1a.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: alive(EV_OTHER_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (__twig1a.cleanup(),root.alive(),root.other_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: EV_OTHER_GONE: Dropped reference root.other[0] = __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig1a.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Ignoring trigger to terminate: already terminating</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (__twig1a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig1a.cleanup(),_branch1.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (__twig1a.cleanup(),_branch1.alive(),_branch1.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[0] = __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: No more children</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig1a.cleanup(),_branch1.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Ignoring trigger to terminate: already terminating</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (__twig1a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 0 (-)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Removing from parent test(root)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (_branch1.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: scene forgets _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: removing reference _branch1.other[0] -> other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Received Event EV_OTHER_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (_branch1.cleanup(),other.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: alive(EV_OTHER_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (_branch1.cleanup(),other.alive(),other.other_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: EV_OTHER_GONE: Dropped reference other.other[1] = _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (_branch1.cleanup(),other.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Terminating (cause = OSMO_FSM_TERM_REGULAR)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (_branch1.cleanup(),other.alive(),other.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: scene forgets other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: removing reference other.other[0] -> _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_OTHER_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_OTHER_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.other_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: EV_OTHER_GONE: Dropped reference _branch0.other[0] = other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Terminating (cause = OSMO_FSM_TERM_REGULAR)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: Terminating (cause = OSMO_FSM_TERM_PARENT)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: Removing from parent test(_branch0)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: scene forgets __twig0b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 7 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup(),_branch0.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[1] = __twig0b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: still exists: child[0]</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: Terminating (cause = OSMO_FSM_TERM_PARENT)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: Removing from parent test(_branch0)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: scene forgets __twig0a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: removing reference __twig0a.other[0] -> other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Received Event EV_OTHER_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: alive(EV_OTHER_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 7 (_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup(),other.other_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 7 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup(),_branch0.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[0] = __twig0a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: No more children</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Ignoring trigger to terminate: already terminating</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Removing from parent test(root)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: scene forgets _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 7 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive(),root.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[0] = _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: still exists: child[1]</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE with NULL data, must be a parent_term event. Ignore.</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (_branch1.cleanup(),other.alive(),other.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (_branch1.cleanup(),other.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (_branch1.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (_branch1.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (_branch1.cleanup(),root.alive(),root.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[1] = _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: No more children</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (_branch1.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Ignoring trigger to terminate: already terminating</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (_branch1.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 0 (-)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (root.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: scene forgets root</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 0 (-)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG --- after term cascade:</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG --- all deallocated.</span><br><span style="color: hsl(120, 100%, 40%);">+*** loop_ctx contains 33 blocks, deallocating.</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG scene_alloc()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: is child of test(root)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: is child of test(_branch0)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: is child of test(_branch0)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: is child of test(root)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: is child of test(_branch1)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: is child of test(_branch1)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: _branch0.other[0] = other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: other.other[0] = _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: __twig0a.other[0] = other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: other.other[1] = __twig0a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: _branch1.other[0] = other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: other.other[1] = _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: __twig1a.other[0] = root</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: root.other[0] = __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG ------ before destroy-event cascade, got:</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   root</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig0a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig0b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig1b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG ---</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG --- destroy-event at root</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Received Event EV_DESTROY</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: alive(EV_DESTROY)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Terminating (cause = OSMO_FSM_TERM_REGULAR)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Terminating (cause = OSMO_FSM_TERM_PARENT)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: Terminating (cause = OSMO_FSM_TERM_PARENT)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: Removing from parent test(_branch1)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (root.alive(),__twig1b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: scene forgets __twig1b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (root.alive(),__twig1b.cleanup(),_branch1.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (root.alive(),__twig1b.cleanup(),_branch1.alive(),_branch1.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[1] = __twig1b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: still exists: child[0]</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (root.alive(),__twig1b.cleanup(),_branch1.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (root.alive(),__twig1b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: Terminating (cause = OSMO_FSM_TERM_PARENT)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: Removing from parent test(_branch1)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (root.alive(),__twig1a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: scene forgets __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: removing reference __twig1a.other[0] -> root</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Received Event EV_OTHER_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (2*root.alive(),__twig1a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: alive(EV_OTHER_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (2*root.alive(),__twig1a.cleanup(),root.other_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: EV_OTHER_GONE: Dropped reference root.other[0] = __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (2*root.alive(),__twig1a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Ignoring trigger to terminate: already terminating</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (root.alive(),__twig1a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (root.alive(),__twig1a.cleanup(),_branch1.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (root.alive(),__twig1a.cleanup(),_branch1.alive(),_branch1.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[0] = __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: No more children</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (root.alive(),__twig1a.cleanup(),_branch1.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Ignoring trigger to terminate: already terminating</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (root.alive(),__twig1a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Removing from parent test(root)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (root.alive(),_branch1.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: scene forgets _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: removing reference _branch1.other[0] -> other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Received Event EV_OTHER_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (root.alive(),_branch1.cleanup(),other.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: alive(EV_OTHER_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (root.alive(),_branch1.cleanup(),other.alive(),other.other_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: EV_OTHER_GONE: Dropped reference other.other[1] = _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (root.alive(),_branch1.cleanup(),other.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Terminating (cause = OSMO_FSM_TERM_REGULAR)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (root.alive(),_branch1.cleanup(),other.alive(),other.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: scene forgets other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: removing reference other.other[0] -> _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_OTHER_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_OTHER_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.other_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: EV_OTHER_GONE: Dropped reference _branch0.other[0] = other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Terminating (cause = OSMO_FSM_TERM_REGULAR)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: Terminating (cause = OSMO_FSM_TERM_PARENT)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: Removing from parent test(_branch0)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: scene forgets __twig0b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 7 (root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 8 (root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup(),_branch0.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[1] = __twig0b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: still exists: child[0]</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 7 (root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: Terminating (cause = OSMO_FSM_TERM_PARENT)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: Removing from parent test(_branch0)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: scene forgets __twig0a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: removing reference __twig0a.other[0] -> other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Received Event EV_OTHER_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 7 (root.alive(),_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: alive(EV_OTHER_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 8 (root.alive(),_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup(),other.other_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 7 (root.alive(),_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 7 (root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 8 (root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup(),_branch0.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[0] = __twig0a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: No more children</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 7 (root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Ignoring trigger to terminate: already terminating</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Removing from parent test(root)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: scene forgets _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 7 (2*root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 8 (2*root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[0] = _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: still exists: child[1]</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 7 (2*root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (2*root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE with NULL data, must be a parent_term event. Ignore.</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (root.alive(),_branch1.cleanup(),other.alive(),other.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (root.alive(),_branch1.cleanup(),other.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (root.alive(),_branch1.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (2*root.alive(),_branch1.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (2*root.alive(),_branch1.cleanup(),root.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[1] = _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: No more children</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (2*root.alive(),_branch1.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Ignoring trigger to terminate: already terminating</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (root.alive(),_branch1.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (root.alive(),root.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: scene forgets root</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 0 (-)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG --- after destroy-event cascade:</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG --- all deallocated.</span><br><span style="color: hsl(120, 100%, 40%);">+*** loop_ctx contains 33 blocks, deallocating.</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG scene_alloc()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: is child of test(root)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: is child of test(_branch0)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: is child of test(_branch0)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: is child of test(root)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: is child of test(_branch1)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: is child of test(_branch1)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: _branch0.other[0] = other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: other.other[0] = _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: __twig0a.other[0] = other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: other.other[1] = __twig0a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: _branch1.other[0] = other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: other.other[1] = _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: __twig1a.other[0] = root</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: root.other[0] = __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG ------ before term cascade, got:</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   root</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig0a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig0b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig1b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG ---</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG --- term at _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Terminating (cause = OSMO_FSM_TERM_REGULAR)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: Terminating (cause = OSMO_FSM_TERM_PARENT)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: Removing from parent test(_branch0)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (__twig0b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: scene forgets __twig0b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig0b.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (__twig0b.cleanup(),_branch0.alive(),_branch0.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[1] = __twig0b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: still exists: child[0]</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig0b.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (__twig0b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 0 (-)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: Terminating (cause = OSMO_FSM_TERM_PARENT)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: Removing from parent test(_branch0)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: scene forgets __twig0a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: removing reference __twig0a.other[0] -> other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Received Event EV_OTHER_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig0a.cleanup(),other.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: alive(EV_OTHER_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (__twig0a.cleanup(),other.alive(),other.other_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig0a.cleanup(),other.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig0a.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (__twig0a.cleanup(),_branch0.alive(),_branch0.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[0] = __twig0a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: No more children</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig0a.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Ignoring trigger to terminate: already terminating</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 0 (-)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Removing from parent test(root)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (_branch0.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: scene forgets _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: removing reference _branch0.other[0] -> other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Received Event EV_OTHER_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (_branch0.cleanup(),other.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: alive(EV_OTHER_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (_branch0.cleanup(),other.alive(),other.other_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: EV_OTHER_GONE: Dropped reference other.other[0] = _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (_branch0.cleanup(),other.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Terminating (cause = OSMO_FSM_TERM_REGULAR)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (_branch0.cleanup(),other.alive(),other.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: scene forgets other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: removing reference other.other[1] -> _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_OTHER_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_OTHER_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive(),_branch1.other_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: EV_OTHER_GONE: Dropped reference _branch1.other[0] = other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Terminating (cause = OSMO_FSM_TERM_REGULAR)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: Terminating (cause = OSMO_FSM_TERM_PARENT)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: Removing from parent test(_branch1)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive(),__twig1b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: scene forgets __twig1b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch0.cleanup(),other.alive(),other.cleanup(),2*_branch1.alive(),__twig1b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 7 (_branch0.cleanup(),other.alive(),other.cleanup(),2*_branch1.alive(),__twig1b.cleanup(),_branch1.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[1] = __twig1b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: still exists: child[0]</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch0.cleanup(),other.alive(),other.cleanup(),2*_branch1.alive(),__twig1b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive(),__twig1b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: Terminating (cause = OSMO_FSM_TERM_PARENT)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: Removing from parent test(_branch1)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive(),__twig1a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: scene forgets __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: removing reference __twig1a.other[0] -> root</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Received Event EV_OTHER_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive(),__twig1a.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: alive(EV_OTHER_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 7 (_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive(),__twig1a.cleanup(),root.alive(),root.other_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: EV_OTHER_GONE: Dropped reference root.other[0] = __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive(),__twig1a.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Terminating (cause = OSMO_FSM_TERM_REGULAR)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Ignoring trigger to terminate: already terminating</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL ERROR test(root){alive}: Internal error while terminating child FSMs: a child FSM is stuck</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 7 (_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive(),__twig1a.cleanup(),root.alive(),root.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: scene forgets root</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive(),__twig1a.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive(),__twig1a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch0.cleanup(),other.alive(),other.cleanup(),2*_branch1.alive(),__twig1a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 7 (_branch0.cleanup(),other.alive(),other.cleanup(),2*_branch1.alive(),__twig1a.cleanup(),_branch1.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[0] = __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: No more children</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch0.cleanup(),other.alive(),other.cleanup(),2*_branch1.alive(),__twig1a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Ignoring trigger to terminate: already terminating</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive(),__twig1a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Removing from parent test(root)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive(),_branch1.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: scene forgets _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive(),_branch1.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 7 (_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive(),_branch1.cleanup(),root.alive(),root.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[1] = _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: still exists: child[0]</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive(),_branch1.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive(),_branch1.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE with NULL data, must be a parent_term event. Ignore.</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (_branch0.cleanup(),other.alive(),other.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (_branch0.cleanup(),other.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (_branch0.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (_branch0.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (_branch0.cleanup(),root.alive(),root.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[0] = _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: No more children</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (_branch0.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Ignoring trigger to terminate: already terminating</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (_branch0.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 0 (-)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE with NULL data, must be a parent_term event. Ignore.</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 0 (-)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG --- after term cascade:</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG --- all deallocated.</span><br><span style="color: hsl(120, 100%, 40%);">+*** loop_ctx contains 33 blocks, deallocating.</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG scene_alloc()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: is child of test(root)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: is child of test(_branch0)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: is child of test(_branch0)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: is child of test(root)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: is child of test(_branch1)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: is child of test(_branch1)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: _branch0.other[0] = other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: other.other[0] = _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: __twig0a.other[0] = other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: other.other[1] = __twig0a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: _branch1.other[0] = other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: other.other[1] = _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: __twig1a.other[0] = root</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: root.other[0] = __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG ------ before destroy-event cascade, got:</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   root</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig0a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig0b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig1b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG ---</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG --- destroy-event at _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_DESTROY</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_DESTROY)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Terminating (cause = OSMO_FSM_TERM_REGULAR)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: Terminating (cause = OSMO_FSM_TERM_PARENT)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: Removing from parent test(_branch0)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (_branch0.alive(),__twig0b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: scene forgets __twig0b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (2*_branch0.alive(),__twig0b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (2*_branch0.alive(),__twig0b.cleanup(),_branch0.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[1] = __twig0b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: still exists: child[0]</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (2*_branch0.alive(),__twig0b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (_branch0.alive(),__twig0b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: Terminating (cause = OSMO_FSM_TERM_PARENT)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: Removing from parent test(_branch0)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: scene forgets __twig0a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: removing reference __twig0a.other[0] -> other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Received Event EV_OTHER_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (_branch0.alive(),__twig0a.cleanup(),other.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: alive(EV_OTHER_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (_branch0.alive(),__twig0a.cleanup(),other.alive(),other.other_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (_branch0.alive(),__twig0a.cleanup(),other.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (2*_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (2*_branch0.alive(),__twig0a.cleanup(),_branch0.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[0] = __twig0a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: No more children</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (2*_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Ignoring trigger to terminate: already terminating</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Removing from parent test(root)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (_branch0.alive(),_branch0.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: scene forgets _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: removing reference _branch0.other[0] -> other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Received Event EV_OTHER_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (_branch0.alive(),_branch0.cleanup(),other.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: alive(EV_OTHER_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (_branch0.alive(),_branch0.cleanup(),other.alive(),other.other_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: EV_OTHER_GONE: Dropped reference other.other[0] = _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (_branch0.alive(),_branch0.cleanup(),other.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Terminating (cause = OSMO_FSM_TERM_REGULAR)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (_branch0.alive(),_branch0.cleanup(),other.alive(),other.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: scene forgets other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: removing reference other.other[1] -> _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_OTHER_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch0.alive(),_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_OTHER_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch0.alive(),_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive(),_branch1.other_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: EV_OTHER_GONE: Dropped reference _branch1.other[0] = other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch0.alive(),_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Terminating (cause = OSMO_FSM_TERM_REGULAR)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: Terminating (cause = OSMO_FSM_TERM_PARENT)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: Removing from parent test(_branch1)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch0.alive(),_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive(),__twig1b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: scene forgets __twig1b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 7 (_branch0.alive(),_branch0.cleanup(),other.alive(),other.cleanup(),2*_branch1.alive(),__twig1b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 8 (_branch0.alive(),_branch0.cleanup(),other.alive(),other.cleanup(),2*_branch1.alive(),__twig1b.cleanup(),_branch1.child_gone(</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[1] = __twig1b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: still exists: child[0]</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 7 (_branch0.alive(),_branch0.cleanup(),other.alive(),other.cleanup(),2*_branch1.alive(),__twig1b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch0.alive(),_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive(),__twig1b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch0.alive(),_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: Terminating (cause = OSMO_FSM_TERM_PARENT)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: Removing from parent test(_branch1)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch0.alive(),_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive(),__twig1a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: scene forgets __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: removing reference __twig1a.other[0] -> root</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Received Event EV_OTHER_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 7 (_branch0.alive(),_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive(),__twig1a.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: alive(EV_OTHER_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 8 (_branch0.alive(),_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive(),__twig1a.cleanup(),root.alive(),root.othe</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: EV_OTHER_GONE: Dropped reference root.other[0] = __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 7 (_branch0.alive(),_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive(),__twig1a.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Terminating (cause = OSMO_FSM_TERM_REGULAR)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Ignoring trigger to terminate: already terminating</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL ERROR test(root){alive}: Internal error while terminating child FSMs: a child FSM is stuck</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 8 (_branch0.alive(),_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive(),__twig1a.cleanup(),root.alive(),root.clea</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: scene forgets root</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 7 (_branch0.alive(),_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive(),__twig1a.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch0.alive(),_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive(),__twig1a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 7 (_branch0.alive(),_branch0.cleanup(),other.alive(),other.cleanup(),2*_branch1.alive(),__twig1a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 8 (_branch0.alive(),_branch0.cleanup(),other.alive(),other.cleanup(),2*_branch1.alive(),__twig1a.cleanup(),_branch1.child_gone(</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[0] = __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: No more children</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 7 (_branch0.alive(),_branch0.cleanup(),other.alive(),other.cleanup(),2*_branch1.alive(),__twig1a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Ignoring trigger to terminate: already terminating</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch0.alive(),_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive(),__twig1a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch0.alive(),_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Removing from parent test(root)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch0.alive(),_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive(),_branch1.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: scene forgets _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 7 (_branch0.alive(),_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive(),_branch1.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 8 (_branch0.alive(),_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive(),_branch1.cleanup(),root.alive(),root.chil</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[1] = _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: still exists: child[0]</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 7 (_branch0.alive(),_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive(),_branch1.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch0.alive(),_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive(),_branch1.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch0.alive(),_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch0.alive(),_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE with NULL data, must be a parent_term event. Ignore.</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch0.alive(),_branch0.cleanup(),other.alive(),other.cleanup(),_branch1.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (_branch0.alive(),_branch0.cleanup(),other.alive(),other.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (_branch0.alive(),_branch0.cleanup(),other.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (_branch0.alive(),_branch0.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (_branch0.alive(),_branch0.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (_branch0.alive(),_branch0.cleanup(),root.alive(),root.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[0] = _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: No more children</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (_branch0.alive(),_branch0.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Ignoring trigger to terminate: already terminating</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (_branch0.alive(),_branch0.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (_branch0.alive(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE with NULL data, must be a parent_term event. Ignore.</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 0 (-)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG --- after destroy-event cascade:</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG --- all deallocated.</span><br><span style="color: hsl(120, 100%, 40%);">+*** loop_ctx contains 33 blocks, deallocating.</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG scene_alloc()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: is child of test(root)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: is child of test(_branch0)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: is child of test(_branch0)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: is child of test(root)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: is child of test(_branch1)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: is child of test(_branch1)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: _branch0.other[0] = other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: other.other[0] = _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: __twig0a.other[0] = other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: other.other[1] = __twig0a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: _branch1.other[0] = other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: other.other[1] = _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: __twig1a.other[0] = root</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: root.other[0] = __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG ------ before term cascade, got:</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   root</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig0a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig0b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig1b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG ---</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG --- term at __twig0a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: Terminating (cause = OSMO_FSM_TERM_REGULAR)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: Removing from parent test(_branch0)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: scene forgets __twig0a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: removing reference __twig0a.other[0] -> other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Received Event EV_OTHER_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig0a.cleanup(),other.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: alive(EV_OTHER_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (__twig0a.cleanup(),other.alive(),other.other_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig0a.cleanup(),other.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig0a.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (__twig0a.cleanup(),_branch0.alive(),_branch0.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[0] = __twig0a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: still exists: child[1]</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig0a.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 0 (-)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE with NULL data, must be a parent_term event. Ignore.</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 0 (-)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG --- after term cascade:</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   root</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig0b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig1b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG --- 7 objects remain. cleaning up</span><br><span style="color: hsl(120, 100%, 40%);">+*** loop_ctx contains 5 blocks, deallocating.</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Terminating (cause = OSMO_FSM_TERM_ERROR)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Terminating (cause = OSMO_FSM_TERM_PARENT)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: Terminating (cause = OSMO_FSM_TERM_PARENT)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: Removing from parent test(_branch1)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (__twig1b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: scene forgets __twig1b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig1b.cleanup(),_branch1.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (__twig1b.cleanup(),_branch1.alive(),_branch1.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[1] = __twig1b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: still exists: child[0]</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig1b.cleanup(),_branch1.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (__twig1b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 0 (-)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: Terminating (cause = OSMO_FSM_TERM_PARENT)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: Removing from parent test(_branch1)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (__twig1a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: scene forgets __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: removing reference __twig1a.other[0] -> root</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Received Event EV_OTHER_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig1a.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: alive(EV_OTHER_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (__twig1a.cleanup(),root.alive(),root.other_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: EV_OTHER_GONE: Dropped reference root.other[0] = __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig1a.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Ignoring trigger to terminate: already terminating</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (__twig1a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig1a.cleanup(),_branch1.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (__twig1a.cleanup(),_branch1.alive(),_branch1.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[0] = __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: No more children</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig1a.cleanup(),_branch1.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Ignoring trigger to terminate: already terminating</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (__twig1a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 0 (-)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Removing from parent test(root)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (_branch1.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: scene forgets _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: removing reference _branch1.other[0] -> other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Received Event EV_OTHER_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (_branch1.cleanup(),other.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: alive(EV_OTHER_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (_branch1.cleanup(),other.alive(),other.other_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: EV_OTHER_GONE: Dropped reference other.other[1] = _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (_branch1.cleanup(),other.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Terminating (cause = OSMO_FSM_TERM_REGULAR)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (_branch1.cleanup(),other.alive(),other.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: scene forgets other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: removing reference other.other[0] -> _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_OTHER_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_OTHER_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.other_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: EV_OTHER_GONE: Dropped reference _branch0.other[0] = other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Terminating (cause = OSMO_FSM_TERM_REGULAR)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: Terminating (cause = OSMO_FSM_TERM_PARENT)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: Removing from parent test(_branch0)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: scene forgets __twig0b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 7 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup(),_branch0.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[1] = __twig0b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: No more children</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Ignoring trigger to terminate: already terminating</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Removing from parent test(root)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: scene forgets _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 7 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive(),root.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[0] = _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: still exists: child[1]</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE with NULL data, must be a parent_term event. Ignore.</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (_branch1.cleanup(),other.alive(),other.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (_branch1.cleanup(),other.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (_branch1.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (_branch1.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (_branch1.cleanup(),root.alive(),root.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[1] = _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: No more children</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (_branch1.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Ignoring trigger to terminate: already terminating</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (_branch1.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 0 (-)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (root.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: scene forgets root</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 0 (-)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG scene_alloc()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: is child of test(root)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: is child of test(_branch0)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: is child of test(_branch0)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: is child of test(root)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: is child of test(_branch1)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: is child of test(_branch1)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: _branch0.other[0] = other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: other.other[0] = _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: __twig0a.other[0] = other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: other.other[1] = __twig0a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: _branch1.other[0] = other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: other.other[1] = _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: __twig1a.other[0] = root</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: root.other[0] = __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG ------ before destroy-event cascade, got:</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   root</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig0a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig0b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig1b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG ---</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG --- destroy-event at __twig0a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: Received Event EV_DESTROY</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (__twig0a.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: alive(EV_DESTROY)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: Terminating (cause = OSMO_FSM_TERM_REGULAR)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: Removing from parent test(_branch0)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig0a.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: scene forgets __twig0a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: removing reference __twig0a.other[0] -> other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Received Event EV_OTHER_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (__twig0a.alive(),__twig0a.cleanup(),other.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: alive(EV_OTHER_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (__twig0a.alive(),__twig0a.cleanup(),other.alive(),other.other_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (__twig0a.alive(),__twig0a.cleanup(),other.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig0a.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (__twig0a.alive(),__twig0a.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (__twig0a.alive(),__twig0a.cleanup(),_branch0.alive(),_branch0.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[0] = __twig0a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: still exists: child[1]</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (__twig0a.alive(),__twig0a.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig0a.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (__twig0a.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig0a.alive(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE with NULL data, must be a parent_term event. Ignore.</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (__twig0a.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 0 (-)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG --- after destroy-event cascade:</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   root</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig0b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig1b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG --- 7 objects remain. cleaning up</span><br><span style="color: hsl(120, 100%, 40%);">+*** loop_ctx contains 5 blocks, deallocating.</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Terminating (cause = OSMO_FSM_TERM_ERROR)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Terminating (cause = OSMO_FSM_TERM_PARENT)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: Terminating (cause = OSMO_FSM_TERM_PARENT)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: Removing from parent test(_branch1)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (__twig1b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: scene forgets __twig1b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig1b.cleanup(),_branch1.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (__twig1b.cleanup(),_branch1.alive(),_branch1.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[1] = __twig1b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: still exists: child[0]</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig1b.cleanup(),_branch1.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (__twig1b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 0 (-)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: Terminating (cause = OSMO_FSM_TERM_PARENT)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: Removing from parent test(_branch1)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (__twig1a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: scene forgets __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: removing reference __twig1a.other[0] -> root</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Received Event EV_OTHER_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig1a.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: alive(EV_OTHER_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (__twig1a.cleanup(),root.alive(),root.other_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: EV_OTHER_GONE: Dropped reference root.other[0] = __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig1a.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Ignoring trigger to terminate: already terminating</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (__twig1a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig1a.cleanup(),_branch1.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (__twig1a.cleanup(),_branch1.alive(),_branch1.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[0] = __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: No more children</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig1a.cleanup(),_branch1.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Ignoring trigger to terminate: already terminating</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (__twig1a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 0 (-)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Removing from parent test(root)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (_branch1.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: scene forgets _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: removing reference _branch1.other[0] -> other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Received Event EV_OTHER_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (_branch1.cleanup(),other.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: alive(EV_OTHER_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (_branch1.cleanup(),other.alive(),other.other_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: EV_OTHER_GONE: Dropped reference other.other[1] = _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (_branch1.cleanup(),other.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Terminating (cause = OSMO_FSM_TERM_REGULAR)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (_branch1.cleanup(),other.alive(),other.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: scene forgets other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: removing reference other.other[0] -> _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_OTHER_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_OTHER_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.other_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: EV_OTHER_GONE: Dropped reference _branch0.other[0] = other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Terminating (cause = OSMO_FSM_TERM_REGULAR)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: Terminating (cause = OSMO_FSM_TERM_PARENT)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: Removing from parent test(_branch0)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: scene forgets __twig0b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 7 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup(),_branch0.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[1] = __twig0b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: No more children</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Ignoring trigger to terminate: already terminating</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Removing from parent test(root)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: scene forgets _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 7 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive(),root.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[0] = _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: still exists: child[1]</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE with NULL data, must be a parent_term event. Ignore.</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (_branch1.cleanup(),other.alive(),other.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (_branch1.cleanup(),other.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (_branch1.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (_branch1.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (_branch1.cleanup(),root.alive(),root.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[1] = _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: No more children</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (_branch1.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Ignoring trigger to terminate: already terminating</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (_branch1.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 0 (-)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (root.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: scene forgets root</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 0 (-)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG scene_alloc()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: is child of test(root)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: is child of test(_branch0)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: is child of test(_branch0)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: is child of test(root)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: is child of test(_branch1)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: is child of test(_branch1)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: _branch0.other[0] = other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: other.other[0] = _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: __twig0a.other[0] = other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: other.other[1] = __twig0a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: _branch1.other[0] = other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: other.other[1] = _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: __twig1a.other[0] = root</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: root.other[0] = __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG ------ before term cascade, got:</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   root</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig0a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig0b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig1b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG ---</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG --- term at __twig0b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: Terminating (cause = OSMO_FSM_TERM_REGULAR)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: Removing from parent test(_branch0)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (__twig0b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: scene forgets __twig0b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig0b.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (__twig0b.cleanup(),_branch0.alive(),_branch0.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[1] = __twig0b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: still exists: child[0]</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig0b.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (__twig0b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 0 (-)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE with NULL data, must be a parent_term event. Ignore.</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 0 (-)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG --- after term cascade:</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   root</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig0a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig1b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG --- 7 objects remain. cleaning up</span><br><span style="color: hsl(120, 100%, 40%);">+*** loop_ctx contains 5 blocks, deallocating.</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Terminating (cause = OSMO_FSM_TERM_ERROR)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Terminating (cause = OSMO_FSM_TERM_PARENT)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: Terminating (cause = OSMO_FSM_TERM_PARENT)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: Removing from parent test(_branch1)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (__twig1b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: scene forgets __twig1b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig1b.cleanup(),_branch1.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (__twig1b.cleanup(),_branch1.alive(),_branch1.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[1] = __twig1b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: still exists: child[0]</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig1b.cleanup(),_branch1.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (__twig1b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 0 (-)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: Terminating (cause = OSMO_FSM_TERM_PARENT)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: Removing from parent test(_branch1)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (__twig1a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: scene forgets __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: removing reference __twig1a.other[0] -> root</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Received Event EV_OTHER_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig1a.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: alive(EV_OTHER_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (__twig1a.cleanup(),root.alive(),root.other_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: EV_OTHER_GONE: Dropped reference root.other[0] = __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig1a.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Ignoring trigger to terminate: already terminating</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (__twig1a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig1a.cleanup(),_branch1.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (__twig1a.cleanup(),_branch1.alive(),_branch1.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[0] = __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: No more children</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig1a.cleanup(),_branch1.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Ignoring trigger to terminate: already terminating</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (__twig1a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 0 (-)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Removing from parent test(root)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (_branch1.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: scene forgets _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: removing reference _branch1.other[0] -> other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Received Event EV_OTHER_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (_branch1.cleanup(),other.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: alive(EV_OTHER_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (_branch1.cleanup(),other.alive(),other.other_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: EV_OTHER_GONE: Dropped reference other.other[1] = _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (_branch1.cleanup(),other.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Terminating (cause = OSMO_FSM_TERM_REGULAR)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (_branch1.cleanup(),other.alive(),other.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: scene forgets other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: removing reference other.other[0] -> _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_OTHER_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_OTHER_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.other_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: EV_OTHER_GONE: Dropped reference _branch0.other[0] = other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Terminating (cause = OSMO_FSM_TERM_REGULAR)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: Terminating (cause = OSMO_FSM_TERM_PARENT)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: Removing from parent test(_branch0)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: scene forgets __twig0a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: removing reference __twig0a.other[0] -> other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Received Event EV_OTHER_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: alive(EV_OTHER_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 7 (_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup(),other.other_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 7 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup(),_branch0.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[0] = __twig0a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: No more children</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Ignoring trigger to terminate: already terminating</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Removing from parent test(root)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: scene forgets _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 7 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive(),root.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[0] = _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: still exists: child[1]</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE with NULL data, must be a parent_term event. Ignore.</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (_branch1.cleanup(),other.alive(),other.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (_branch1.cleanup(),other.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (_branch1.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (_branch1.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (_branch1.cleanup(),root.alive(),root.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[1] = _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: No more children</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (_branch1.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Ignoring trigger to terminate: already terminating</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (_branch1.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 0 (-)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (root.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: scene forgets root</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 0 (-)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG scene_alloc()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: is child of test(root)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: is child of test(_branch0)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: is child of test(_branch0)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: is child of test(root)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: is child of test(_branch1)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: is child of test(_branch1)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: _branch0.other[0] = other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: other.other[0] = _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: __twig0a.other[0] = other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: other.other[1] = __twig0a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: _branch1.other[0] = other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: other.other[1] = _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: __twig1a.other[0] = root</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: root.other[0] = __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG ------ before destroy-event cascade, got:</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   root</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig0a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig0b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig1b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG ---</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG --- destroy-event at __twig0b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: Received Event EV_DESTROY</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (__twig0b.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: alive(EV_DESTROY)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: Terminating (cause = OSMO_FSM_TERM_REGULAR)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: Removing from parent test(_branch0)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig0b.alive(),__twig0b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: scene forgets __twig0b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (__twig0b.alive(),__twig0b.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (__twig0b.alive(),__twig0b.cleanup(),_branch0.alive(),_branch0.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[1] = __twig0b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: still exists: child[0]</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (__twig0b.alive(),__twig0b.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig0b.alive(),__twig0b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (__twig0b.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig0b.alive(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE with NULL data, must be a parent_term event. Ignore.</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (__twig0b.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 0 (-)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG --- after destroy-event cascade:</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   root</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig0a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig1b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG --- 7 objects remain. cleaning up</span><br><span style="color: hsl(120, 100%, 40%);">+*** loop_ctx contains 5 blocks, deallocating.</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Terminating (cause = OSMO_FSM_TERM_ERROR)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Terminating (cause = OSMO_FSM_TERM_PARENT)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: Terminating (cause = OSMO_FSM_TERM_PARENT)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: Removing from parent test(_branch1)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (__twig1b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: scene forgets __twig1b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig1b.cleanup(),_branch1.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (__twig1b.cleanup(),_branch1.alive(),_branch1.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[1] = __twig1b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: still exists: child[0]</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig1b.cleanup(),_branch1.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (__twig1b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 0 (-)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: Terminating (cause = OSMO_FSM_TERM_PARENT)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: Removing from parent test(_branch1)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (__twig1a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: scene forgets __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: removing reference __twig1a.other[0] -> root</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Received Event EV_OTHER_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig1a.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: alive(EV_OTHER_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (__twig1a.cleanup(),root.alive(),root.other_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: EV_OTHER_GONE: Dropped reference root.other[0] = __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig1a.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Ignoring trigger to terminate: already terminating</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (__twig1a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig1a.cleanup(),_branch1.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (__twig1a.cleanup(),_branch1.alive(),_branch1.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[0] = __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: No more children</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig1a.cleanup(),_branch1.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Ignoring trigger to terminate: already terminating</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (__twig1a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 0 (-)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Removing from parent test(root)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (_branch1.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: scene forgets _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: removing reference _branch1.other[0] -> other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Received Event EV_OTHER_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (_branch1.cleanup(),other.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: alive(EV_OTHER_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (_branch1.cleanup(),other.alive(),other.other_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: EV_OTHER_GONE: Dropped reference other.other[1] = _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (_branch1.cleanup(),other.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Terminating (cause = OSMO_FSM_TERM_REGULAR)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (_branch1.cleanup(),other.alive(),other.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: scene forgets other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: removing reference other.other[0] -> _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_OTHER_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_OTHER_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.other_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: EV_OTHER_GONE: Dropped reference _branch0.other[0] = other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Terminating (cause = OSMO_FSM_TERM_REGULAR)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: Terminating (cause = OSMO_FSM_TERM_PARENT)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: Removing from parent test(_branch0)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: scene forgets __twig0a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: removing reference __twig0a.other[0] -> other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Received Event EV_OTHER_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: alive(EV_OTHER_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 7 (_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup(),other.other_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 7 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup(),_branch0.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[0] = __twig0a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: No more children</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Ignoring trigger to terminate: already terminating</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Removing from parent test(root)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: scene forgets _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 7 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive(),root.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[0] = _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: still exists: child[1]</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE with NULL data, must be a parent_term event. Ignore.</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (_branch1.cleanup(),other.alive(),other.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (_branch1.cleanup(),other.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (_branch1.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (_branch1.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (_branch1.cleanup(),root.alive(),root.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[1] = _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: No more children</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (_branch1.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Ignoring trigger to terminate: already terminating</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (_branch1.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 0 (-)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (root.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: scene forgets root</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 0 (-)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG scene_alloc()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: is child of test(root)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: is child of test(_branch0)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: is child of test(_branch0)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: is child of test(root)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: is child of test(_branch1)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: is child of test(_branch1)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: _branch0.other[0] = other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: other.other[0] = _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: __twig0a.other[0] = other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: other.other[1] = __twig0a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: _branch1.other[0] = other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: other.other[1] = _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: __twig1a.other[0] = root</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: root.other[0] = __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG ------ before term cascade, got:</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   root</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig0a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig0b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig1b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG ---</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG --- term at _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Terminating (cause = OSMO_FSM_TERM_REGULAR)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: Terminating (cause = OSMO_FSM_TERM_PARENT)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: Removing from parent test(_branch1)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (__twig1b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: scene forgets __twig1b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig1b.cleanup(),_branch1.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (__twig1b.cleanup(),_branch1.alive(),_branch1.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[1] = __twig1b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: still exists: child[0]</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig1b.cleanup(),_branch1.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (__twig1b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 0 (-)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: Terminating (cause = OSMO_FSM_TERM_PARENT)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: Removing from parent test(_branch1)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (__twig1a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: scene forgets __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: removing reference __twig1a.other[0] -> root</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Received Event EV_OTHER_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig1a.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: alive(EV_OTHER_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (__twig1a.cleanup(),root.alive(),root.other_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: EV_OTHER_GONE: Dropped reference root.other[0] = __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig1a.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Terminating (cause = OSMO_FSM_TERM_REGULAR)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Ignoring trigger to terminate: already terminating</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL ERROR test(root){alive}: Internal error while terminating child FSMs: a child FSM is stuck</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (__twig1a.cleanup(),root.alive(),root.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: scene forgets root</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig1a.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (__twig1a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig1a.cleanup(),_branch1.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (__twig1a.cleanup(),_branch1.alive(),_branch1.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[0] = __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: No more children</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig1a.cleanup(),_branch1.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Ignoring trigger to terminate: already terminating</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (__twig1a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 0 (-)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Removing from parent test(root)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (_branch1.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: scene forgets _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: removing reference _branch1.other[0] -> other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Received Event EV_OTHER_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (_branch1.cleanup(),other.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: alive(EV_OTHER_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (_branch1.cleanup(),other.alive(),other.other_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: EV_OTHER_GONE: Dropped reference other.other[1] = _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (_branch1.cleanup(),other.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Terminating (cause = OSMO_FSM_TERM_REGULAR)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (_branch1.cleanup(),other.alive(),other.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: scene forgets other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: removing reference other.other[0] -> _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_OTHER_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_OTHER_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.other_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: EV_OTHER_GONE: Dropped reference _branch0.other[0] = other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Terminating (cause = OSMO_FSM_TERM_REGULAR)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: Terminating (cause = OSMO_FSM_TERM_PARENT)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: Removing from parent test(_branch0)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: scene forgets __twig0b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 7 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup(),_branch0.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[1] = __twig0b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: still exists: child[0]</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: Terminating (cause = OSMO_FSM_TERM_PARENT)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: Removing from parent test(_branch0)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: scene forgets __twig0a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: removing reference __twig0a.other[0] -> other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Received Event EV_OTHER_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: alive(EV_OTHER_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 7 (_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup(),other.other_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 7 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup(),_branch0.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[0] = __twig0a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: No more children</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Ignoring trigger to terminate: already terminating</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Removing from parent test(root)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: scene forgets _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 7 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive(),root.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[0] = _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: still exists: child[1]</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE with NULL data, must be a parent_term event. Ignore.</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (_branch1.cleanup(),other.alive(),other.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (_branch1.cleanup(),other.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (_branch1.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (_branch1.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (_branch1.cleanup(),root.alive(),root.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[1] = _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: No more children</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (_branch1.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Ignoring trigger to terminate: already terminating</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (_branch1.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 0 (-)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE with NULL data, must be a parent_term event. Ignore.</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 0 (-)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG --- after term cascade:</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG --- all deallocated.</span><br><span style="color: hsl(120, 100%, 40%);">+*** loop_ctx contains 33 blocks, deallocating.</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG scene_alloc()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: is child of test(root)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: is child of test(_branch0)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: is child of test(_branch0)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: is child of test(root)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: is child of test(_branch1)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: is child of test(_branch1)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: _branch0.other[0] = other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: other.other[0] = _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: __twig0a.other[0] = other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: other.other[1] = __twig0a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: _branch1.other[0] = other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: other.other[1] = _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: __twig1a.other[0] = root</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: root.other[0] = __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG ------ before destroy-event cascade, got:</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   root</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig0a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig0b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig1b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG ---</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG --- destroy-event at _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_DESTROY</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (_branch1.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_DESTROY)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Terminating (cause = OSMO_FSM_TERM_REGULAR)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: Terminating (cause = OSMO_FSM_TERM_PARENT)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: Removing from parent test(_branch1)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (_branch1.alive(),__twig1b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: scene forgets __twig1b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (2*_branch1.alive(),__twig1b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (2*_branch1.alive(),__twig1b.cleanup(),_branch1.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[1] = __twig1b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: still exists: child[0]</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (2*_branch1.alive(),__twig1b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (_branch1.alive(),__twig1b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (_branch1.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: Terminating (cause = OSMO_FSM_TERM_PARENT)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: Removing from parent test(_branch1)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (_branch1.alive(),__twig1a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: scene forgets __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: removing reference __twig1a.other[0] -> root</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Received Event EV_OTHER_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (_branch1.alive(),__twig1a.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: alive(EV_OTHER_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (_branch1.alive(),__twig1a.cleanup(),root.alive(),root.other_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: EV_OTHER_GONE: Dropped reference root.other[0] = __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (_branch1.alive(),__twig1a.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Terminating (cause = OSMO_FSM_TERM_REGULAR)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Ignoring trigger to terminate: already terminating</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL ERROR test(root){alive}: Internal error while terminating child FSMs: a child FSM is stuck</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (_branch1.alive(),__twig1a.cleanup(),root.alive(),root.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: scene forgets root</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (_branch1.alive(),__twig1a.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (_branch1.alive(),__twig1a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (2*_branch1.alive(),__twig1a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (2*_branch1.alive(),__twig1a.cleanup(),_branch1.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[0] = __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: No more children</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (2*_branch1.alive(),__twig1a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Ignoring trigger to terminate: already terminating</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (_branch1.alive(),__twig1a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (_branch1.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Removing from parent test(root)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (_branch1.alive(),_branch1.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: scene forgets _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: removing reference _branch1.other[0] -> other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Received Event EV_OTHER_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (_branch1.alive(),_branch1.cleanup(),other.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: alive(EV_OTHER_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (_branch1.alive(),_branch1.cleanup(),other.alive(),other.other_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: EV_OTHER_GONE: Dropped reference other.other[1] = _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (_branch1.alive(),_branch1.cleanup(),other.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Terminating (cause = OSMO_FSM_TERM_REGULAR)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (_branch1.alive(),_branch1.cleanup(),other.alive(),other.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: scene forgets other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: removing reference other.other[0] -> _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_OTHER_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch1.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_OTHER_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch1.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.other_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: EV_OTHER_GONE: Dropped reference _branch0.other[0] = other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch1.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Terminating (cause = OSMO_FSM_TERM_REGULAR)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: Terminating (cause = OSMO_FSM_TERM_PARENT)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: Removing from parent test(_branch0)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch1.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: scene forgets __twig0b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 7 (_branch1.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 8 (_branch1.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup(),_branch0.child_gone(</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[1] = __twig0b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: still exists: child[0]</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 7 (_branch1.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch1.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch1.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: Terminating (cause = OSMO_FSM_TERM_PARENT)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: Removing from parent test(_branch0)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch1.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: scene forgets __twig0a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: removing reference __twig0a.other[0] -> other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Received Event EV_OTHER_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 7 (_branch1.alive(),_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: alive(EV_OTHER_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 8 (_branch1.alive(),_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup(),other.other_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 7 (_branch1.alive(),_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch1.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 7 (_branch1.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 8 (_branch1.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup(),_branch0.child_gone(</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[0] = __twig0a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: No more children</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 7 (_branch1.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Ignoring trigger to terminate: already terminating</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch1.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch1.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Removing from parent test(root)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch1.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: scene forgets _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 7 (_branch1.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 8 (_branch1.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive(),root.chil</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[0] = _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: still exists: child[1]</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 7 (_branch1.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch1.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch1.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch1.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE with NULL data, must be a parent_term event. Ignore.</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch1.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (_branch1.alive(),_branch1.cleanup(),other.alive(),other.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (_branch1.alive(),_branch1.cleanup(),other.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (_branch1.alive(),_branch1.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (_branch1.alive(),_branch1.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (_branch1.alive(),_branch1.cleanup(),root.alive(),root.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[1] = _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: No more children</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (_branch1.alive(),_branch1.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Ignoring trigger to terminate: already terminating</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (_branch1.alive(),_branch1.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (_branch1.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (_branch1.alive(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE with NULL data, must be a parent_term event. Ignore.</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (_branch1.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 0 (-)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG --- after destroy-event cascade:</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG --- all deallocated.</span><br><span style="color: hsl(120, 100%, 40%);">+*** loop_ctx contains 33 blocks, deallocating.</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG scene_alloc()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: is child of test(root)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: is child of test(_branch0)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: is child of test(_branch0)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: is child of test(root)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: is child of test(_branch1)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: is child of test(_branch1)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: _branch0.other[0] = other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: other.other[0] = _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: __twig0a.other[0] = other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: other.other[1] = __twig0a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: _branch1.other[0] = other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: other.other[1] = _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: __twig1a.other[0] = root</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: root.other[0] = __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG ------ before term cascade, got:</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   root</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig0a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig0b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig1b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG ---</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG --- term at __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: Terminating (cause = OSMO_FSM_TERM_REGULAR)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: Removing from parent test(_branch1)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (__twig1a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: scene forgets __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: removing reference __twig1a.other[0] -> root</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Received Event EV_OTHER_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig1a.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: alive(EV_OTHER_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (__twig1a.cleanup(),root.alive(),root.other_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: EV_OTHER_GONE: Dropped reference root.other[0] = __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig1a.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Terminating (cause = OSMO_FSM_TERM_REGULAR)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Terminating (cause = OSMO_FSM_TERM_PARENT)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: Terminating (cause = OSMO_FSM_TERM_PARENT)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: Removing from parent test(_branch1)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (__twig1a.cleanup(),root.alive(),__twig1b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: scene forgets __twig1b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (__twig1a.cleanup(),root.alive(),__twig1b.cleanup(),_branch1.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (__twig1a.cleanup(),root.alive(),__twig1b.cleanup(),_branch1.alive(),_branch1.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[1] = __twig1b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: still exists: child[0]</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (__twig1a.cleanup(),root.alive(),__twig1b.cleanup(),_branch1.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (__twig1a.cleanup(),root.alive(),__twig1b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig1a.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Removing from parent test(root)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (__twig1a.cleanup(),root.alive(),_branch1.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: scene forgets _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: removing reference _branch1.other[0] -> other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Received Event EV_OTHER_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: alive(EV_OTHER_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.other_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: EV_OTHER_GONE: Dropped reference other.other[1] = _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Terminating (cause = OSMO_FSM_TERM_REGULAR)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: scene forgets other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: removing reference other.other[0] -> _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_OTHER_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_OTHER_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 7 (__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.other_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: EV_OTHER_GONE: Dropped reference _branch0.other[0] = other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Terminating (cause = OSMO_FSM_TERM_REGULAR)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: Terminating (cause = OSMO_FSM_TERM_PARENT)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: Removing from parent test(_branch0)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 7 (__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: scene forgets __twig0b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 8 (__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 9 (__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup(),_bran</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[1] = __twig0b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: still exists: child[0]</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 8 (__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 7 (__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: Terminating (cause = OSMO_FSM_TERM_PARENT)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: Removing from parent test(_branch0)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 7 (__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: scene forgets __twig0a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: removing reference __twig0a.other[0] -> other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Received Event EV_OTHER_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 8 (__twig1a.cleanup(),root.alive(),_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: alive(EV_OTHER_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 9 (__twig1a.cleanup(),root.alive(),_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup(),other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 8 (__twig1a.cleanup(),root.alive(),_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 7 (__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 8 (__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 9 (__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup(),_bran</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[0] = __twig0a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: No more children</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 8 (__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Ignoring trigger to terminate: already terminating</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 7 (__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Removing from parent test(root)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 7 (__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: scene forgets _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 8 (__twig1a.cleanup(),2*root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 9 (__twig1a.cleanup(),2*root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[0] = _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: still exists: child[1]</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 8 (__twig1a.cleanup(),2*root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 7 (__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 7 (__twig1a.cleanup(),2*root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE with NULL data, must be a parent_term event. Ignore.</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (__twig1a.cleanup(),root.alive(),_branch1.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (__twig1a.cleanup(),2*root.alive(),_branch1.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (__twig1a.cleanup(),2*root.alive(),_branch1.cleanup(),root.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[1] = _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: No more children</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (__twig1a.cleanup(),2*root.alive(),_branch1.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Ignoring trigger to terminate: already terminating</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (__twig1a.cleanup(),root.alive(),_branch1.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig1a.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (__twig1a.cleanup(),root.alive(),root.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: scene forgets root</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig1a.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (__twig1a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig1a.cleanup(),_branch1.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (__twig1a.cleanup(),_branch1.alive(),_branch1.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[0] = __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: No more children</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig1a.cleanup(),_branch1.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Ignoring trigger to terminate: already terminating</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (__twig1a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 0 (-)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (_branch1.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE with NULL data, must be a parent_term event. Ignore.</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 0 (-)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG --- after term cascade:</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG --- all deallocated.</span><br><span style="color: hsl(120, 100%, 40%);">+*** loop_ctx contains 33 blocks, deallocating.</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG scene_alloc()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: is child of test(root)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: is child of test(_branch0)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: is child of test(_branch0)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: is child of test(root)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: is child of test(_branch1)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: is child of test(_branch1)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: _branch0.other[0] = other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: other.other[0] = _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: __twig0a.other[0] = other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: other.other[1] = __twig0a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: _branch1.other[0] = other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: other.other[1] = _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: __twig1a.other[0] = root</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: root.other[0] = __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG ------ before destroy-event cascade, got:</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   root</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig0a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig0b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig1b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG ---</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG --- destroy-event at __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: Received Event EV_DESTROY</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (__twig1a.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: alive(EV_DESTROY)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: Terminating (cause = OSMO_FSM_TERM_REGULAR)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: Removing from parent test(_branch1)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig1a.alive(),__twig1a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: scene forgets __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: removing reference __twig1a.other[0] -> root</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Received Event EV_OTHER_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (__twig1a.alive(),__twig1a.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: alive(EV_OTHER_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),root.other_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: EV_OTHER_GONE: Dropped reference root.other[0] = __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (__twig1a.alive(),__twig1a.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Terminating (cause = OSMO_FSM_TERM_REGULAR)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Terminating (cause = OSMO_FSM_TERM_PARENT)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: Terminating (cause = OSMO_FSM_TERM_PARENT)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: Removing from parent test(_branch1)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),__twig1b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: scene forgets __twig1b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),__twig1b.cleanup(),_branch1.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),__twig1b.cleanup(),_branch1.alive(),_branch1.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[1] = __twig1b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: still exists: child[0]</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),__twig1b.cleanup(),_branch1.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),__twig1b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (__twig1a.alive(),__twig1a.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Removing from parent test(root)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: scene forgets _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: removing reference _branch1.other[0] -> other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Received Event EV_OTHER_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: alive(EV_OTHER_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.other_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: EV_OTHER_GONE: Dropped reference other.other[1] = _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Terminating (cause = OSMO_FSM_TERM_REGULAR)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: scene forgets other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: removing reference other.other[0] -> _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_OTHER_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 7 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_OTHER_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 8 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: EV_OTHER_GONE: Dropped reference _branch0.other[0] = other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 7 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Terminating (cause = OSMO_FSM_TERM_REGULAR)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: Terminating (cause = OSMO_FSM_TERM_PARENT)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: Removing from parent test(_branch0)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 8 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0b.</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: scene forgets __twig0b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 9 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 10 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[1] = __twig0b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: still exists: child[0]</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 9 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 8 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0b.</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 7 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: Terminating (cause = OSMO_FSM_TERM_PARENT)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: Removing from parent test(_branch0)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 8 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0a.</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: scene forgets __twig0a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: removing reference __twig0a.other[0] -> other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Received Event EV_OTHER_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 9 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: alive(EV_OTHER_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 10 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 9 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 8 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0a.</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 9 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 10 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[0] = __twig0a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: No more children</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 9 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Ignoring trigger to terminate: already terminating</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 8 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0a.</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 7 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Removing from parent test(root)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 8 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: scene forgets _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 9 (__twig1a.alive(),__twig1a.cleanup(),2*root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 10 (__twig1a.alive(),__twig1a.cleanup(),2*root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branc</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[0] = _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: still exists: child[1]</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 9 (__twig1a.alive(),__twig1a.cleanup(),2*root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 8 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 7 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 8 (__twig1a.alive(),__twig1a.cleanup(),2*root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE with NULL data, must be a parent_term event. Ignore.</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 7 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive(),other.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.cleanup(),other.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (__twig1a.alive(),__twig1a.cleanup(),2*root.alive(),_branch1.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (__twig1a.alive(),__twig1a.cleanup(),2*root.alive(),_branch1.cleanup(),root.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[1] = _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: No more children</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (__twig1a.alive(),__twig1a.cleanup(),2*root.alive(),_branch1.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Ignoring trigger to terminate: already terminating</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),_branch1.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (__twig1a.alive(),__twig1a.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (__twig1a.alive(),__twig1a.cleanup(),root.alive(),root.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: scene forgets root</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (__twig1a.alive(),__twig1a.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig1a.alive(),__twig1a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (__twig1a.alive(),__twig1a.cleanup(),_branch1.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (__twig1a.alive(),__twig1a.cleanup(),_branch1.alive(),_branch1.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[0] = __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: No more children</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (__twig1a.alive(),__twig1a.cleanup(),_branch1.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Ignoring trigger to terminate: already terminating</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig1a.alive(),__twig1a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (__twig1a.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig1a.alive(),_branch1.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE with NULL data, must be a parent_term event. Ignore.</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (__twig1a.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 0 (-)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG --- after destroy-event cascade:</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG --- all deallocated.</span><br><span style="color: hsl(120, 100%, 40%);">+*** loop_ctx contains 33 blocks, deallocating.</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG scene_alloc()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: is child of test(root)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: is child of test(_branch0)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: is child of test(_branch0)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: is child of test(root)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: is child of test(_branch1)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: is child of test(_branch1)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: _branch0.other[0] = other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: other.other[0] = _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: __twig0a.other[0] = other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: other.other[1] = __twig0a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: _branch1.other[0] = other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: other.other[1] = _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: __twig1a.other[0] = root</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: root.other[0] = __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG ------ before term cascade, got:</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   root</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig0a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig0b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig1b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG ---</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG --- term at __twig1b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: Terminating (cause = OSMO_FSM_TERM_REGULAR)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: Removing from parent test(_branch1)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (__twig1b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: scene forgets __twig1b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig1b.cleanup(),_branch1.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (__twig1b.cleanup(),_branch1.alive(),_branch1.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[1] = __twig1b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: still exists: child[0]</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig1b.cleanup(),_branch1.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (__twig1b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 0 (-)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (_branch1.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE with NULL data, must be a parent_term event. Ignore.</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 0 (-)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG --- after term cascade:</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   root</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig0a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig0b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG --- 7 objects remain. cleaning up</span><br><span style="color: hsl(120, 100%, 40%);">+*** loop_ctx contains 5 blocks, deallocating.</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Terminating (cause = OSMO_FSM_TERM_ERROR)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Terminating (cause = OSMO_FSM_TERM_PARENT)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: Terminating (cause = OSMO_FSM_TERM_PARENT)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: Removing from parent test(_branch1)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (__twig1a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: scene forgets __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: removing reference __twig1a.other[0] -> root</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Received Event EV_OTHER_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig1a.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: alive(EV_OTHER_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (__twig1a.cleanup(),root.alive(),root.other_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: EV_OTHER_GONE: Dropped reference root.other[0] = __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig1a.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Ignoring trigger to terminate: already terminating</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (__twig1a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig1a.cleanup(),_branch1.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (__twig1a.cleanup(),_branch1.alive(),_branch1.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[0] = __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: No more children</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig1a.cleanup(),_branch1.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Ignoring trigger to terminate: already terminating</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (__twig1a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 0 (-)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Removing from parent test(root)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (_branch1.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: scene forgets _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: removing reference _branch1.other[0] -> other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Received Event EV_OTHER_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (_branch1.cleanup(),other.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: alive(EV_OTHER_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (_branch1.cleanup(),other.alive(),other.other_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: EV_OTHER_GONE: Dropped reference other.other[1] = _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (_branch1.cleanup(),other.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Terminating (cause = OSMO_FSM_TERM_REGULAR)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (_branch1.cleanup(),other.alive(),other.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: scene forgets other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: removing reference other.other[0] -> _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_OTHER_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_OTHER_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.other_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: EV_OTHER_GONE: Dropped reference _branch0.other[0] = other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Terminating (cause = OSMO_FSM_TERM_REGULAR)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: Terminating (cause = OSMO_FSM_TERM_PARENT)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: Removing from parent test(_branch0)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: scene forgets __twig0b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 7 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup(),_branch0.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[1] = __twig0b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: still exists: child[0]</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: Terminating (cause = OSMO_FSM_TERM_PARENT)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: Removing from parent test(_branch0)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: scene forgets __twig0a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: removing reference __twig0a.other[0] -> other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Received Event EV_OTHER_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: alive(EV_OTHER_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 7 (_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup(),other.other_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 7 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup(),_branch0.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[0] = __twig0a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: No more children</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Ignoring trigger to terminate: already terminating</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Removing from parent test(root)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: scene forgets _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 7 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive(),root.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[0] = _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: still exists: child[1]</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE with NULL data, must be a parent_term event. Ignore.</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (_branch1.cleanup(),other.alive(),other.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (_branch1.cleanup(),other.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (_branch1.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (_branch1.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (_branch1.cleanup(),root.alive(),root.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[1] = _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: No more children</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (_branch1.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Ignoring trigger to terminate: already terminating</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (_branch1.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 0 (-)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (root.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: scene forgets root</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 0 (-)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG scene_alloc()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: is child of test(root)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: is child of test(_branch0)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: is child of test(_branch0)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: is child of test(root)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: is child of test(_branch1)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: is child of test(_branch1)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: _branch0.other[0] = other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: other.other[0] = _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: __twig0a.other[0] = other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: other.other[1] = __twig0a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: _branch1.other[0] = other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: other.other[1] = _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: __twig1a.other[0] = root</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: root.other[0] = __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG ------ before destroy-event cascade, got:</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   root</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig0a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig0b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig1b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG ---</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG --- destroy-event at __twig1b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: Received Event EV_DESTROY</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (__twig1b.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: alive(EV_DESTROY)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: Terminating (cause = OSMO_FSM_TERM_REGULAR)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: Removing from parent test(_branch1)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig1b.alive(),__twig1b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: scene forgets __twig1b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (__twig1b.alive(),__twig1b.cleanup(),_branch1.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (__twig1b.alive(),__twig1b.cleanup(),_branch1.alive(),_branch1.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[1] = __twig1b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: still exists: child[0]</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (__twig1b.alive(),__twig1b.cleanup(),_branch1.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig1b.alive(),__twig1b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (__twig1b.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig1b.alive(),_branch1.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE with NULL data, must be a parent_term event. Ignore.</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (__twig1b.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 0 (-)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG --- after destroy-event cascade:</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   root</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig0a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig0b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG --- 7 objects remain. cleaning up</span><br><span style="color: hsl(120, 100%, 40%);">+*** loop_ctx contains 5 blocks, deallocating.</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Terminating (cause = OSMO_FSM_TERM_ERROR)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Terminating (cause = OSMO_FSM_TERM_PARENT)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: Terminating (cause = OSMO_FSM_TERM_PARENT)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: Removing from parent test(_branch1)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (__twig1a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: scene forgets __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: removing reference __twig1a.other[0] -> root</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Received Event EV_OTHER_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig1a.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: alive(EV_OTHER_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (__twig1a.cleanup(),root.alive(),root.other_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: EV_OTHER_GONE: Dropped reference root.other[0] = __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig1a.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Ignoring trigger to terminate: already terminating</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (__twig1a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig1a.cleanup(),_branch1.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (__twig1a.cleanup(),_branch1.alive(),_branch1.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[0] = __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: No more children</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (__twig1a.cleanup(),_branch1.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Ignoring trigger to terminate: already terminating</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (__twig1a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 0 (-)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Removing from parent test(root)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (_branch1.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: scene forgets _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: removing reference _branch1.other[0] -> other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Received Event EV_OTHER_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (_branch1.cleanup(),other.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: alive(EV_OTHER_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (_branch1.cleanup(),other.alive(),other.other_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: EV_OTHER_GONE: Dropped reference other.other[1] = _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (_branch1.cleanup(),other.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Terminating (cause = OSMO_FSM_TERM_REGULAR)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (_branch1.cleanup(),other.alive(),other.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: scene forgets other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: removing reference other.other[0] -> _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_OTHER_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_OTHER_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.other_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: EV_OTHER_GONE: Dropped reference _branch0.other[0] = other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Terminating (cause = OSMO_FSM_TERM_REGULAR)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: Terminating (cause = OSMO_FSM_TERM_PARENT)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: Removing from parent test(_branch0)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: scene forgets __twig0b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 7 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup(),_branch0.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[1] = __twig0b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: still exists: child[0]</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: Terminating (cause = OSMO_FSM_TERM_PARENT)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: Removing from parent test(_branch0)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: scene forgets __twig0a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: removing reference __twig0a.other[0] -> other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Received Event EV_OTHER_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: alive(EV_OTHER_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 7 (_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup(),other.other_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch1.cleanup(),2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 7 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup(),_branch0.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[0] = __twig0a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: No more children</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Ignoring trigger to terminate: already terminating</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Removing from parent test(root)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: scene forgets _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 7 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive(),root.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[0] = _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: still exists: child[1]</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE with NULL data, must be a parent_term event. Ignore.</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (_branch1.cleanup(),other.alive(),other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (_branch1.cleanup(),other.alive(),other.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (_branch1.cleanup(),other.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (_branch1.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (_branch1.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (_branch1.cleanup(),root.alive(),root.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[1] = _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: No more children</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (_branch1.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Ignoring trigger to terminate: already terminating</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (_branch1.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 0 (-)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (root.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: scene forgets root</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 0 (-)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG scene_alloc()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: is child of test(root)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: is child of test(_branch0)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: is child of test(_branch0)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: is child of test(root)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: is child of test(_branch1)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: is child of test(_branch1)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: _branch0.other[0] = other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: other.other[0] = _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: __twig0a.other[0] = other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: other.other[1] = __twig0a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: _branch1.other[0] = other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: other.other[1] = _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: __twig1a.other[0] = root</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: root.other[0] = __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG ------ before term cascade, got:</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   root</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig0a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig0b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig1b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG ---</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG --- term at other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Terminating (cause = OSMO_FSM_TERM_REGULAR)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (other.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: scene forgets other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: removing reference other.other[0] -> _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_OTHER_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_OTHER_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (other.cleanup(),_branch0.alive(),_branch0.other_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: EV_OTHER_GONE: Dropped reference _branch0.other[0] = other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Terminating (cause = OSMO_FSM_TERM_REGULAR)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: Terminating (cause = OSMO_FSM_TERM_PARENT)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: Removing from parent test(_branch0)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (other.cleanup(),_branch0.alive(),__twig0b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: scene forgets __twig0b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (other.cleanup(),2*_branch0.alive(),__twig0b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (other.cleanup(),2*_branch0.alive(),__twig0b.cleanup(),_branch0.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[1] = __twig0b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: still exists: child[0]</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (other.cleanup(),2*_branch0.alive(),__twig0b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (other.cleanup(),_branch0.alive(),__twig0b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: Terminating (cause = OSMO_FSM_TERM_PARENT)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: Removing from parent test(_branch0)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (other.cleanup(),_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: scene forgets __twig0a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: removing reference __twig0a.other[0] -> other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Received Event EV_OTHER_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (other.cleanup(),_branch0.alive(),__twig0a.cleanup(),other.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: alive(EV_OTHER_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (other.cleanup(),_branch0.alive(),__twig0a.cleanup(),other.alive(),other.other_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (other.cleanup(),_branch0.alive(),__twig0a.cleanup(),other.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (other.cleanup(),_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (other.cleanup(),2*_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (other.cleanup(),2*_branch0.alive(),__twig0a.cleanup(),_branch0.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[0] = __twig0a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: No more children</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (other.cleanup(),2*_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Ignoring trigger to terminate: already terminating</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (other.cleanup(),_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Removing from parent test(root)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (other.cleanup(),_branch0.alive(),_branch0.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: scene forgets _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive(),root.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[0] = _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: still exists: child[1]</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (other.cleanup(),_branch0.alive(),_branch0.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (other.cleanup(),_branch0.alive(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE with NULL data, must be a parent_term event. Ignore.</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (other.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: removing reference other.other[1] -> _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_OTHER_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (other.cleanup(),_branch1.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_OTHER_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (other.cleanup(),_branch1.alive(),_branch1.other_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: EV_OTHER_GONE: Dropped reference _branch1.other[0] = other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (other.cleanup(),_branch1.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Terminating (cause = OSMO_FSM_TERM_REGULAR)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: Terminating (cause = OSMO_FSM_TERM_PARENT)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: Removing from parent test(_branch1)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (other.cleanup(),_branch1.alive(),__twig1b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: scene forgets __twig1b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (other.cleanup(),2*_branch1.alive(),__twig1b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (other.cleanup(),2*_branch1.alive(),__twig1b.cleanup(),_branch1.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[1] = __twig1b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: still exists: child[0]</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (other.cleanup(),2*_branch1.alive(),__twig1b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (other.cleanup(),_branch1.alive(),__twig1b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (other.cleanup(),_branch1.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: Terminating (cause = OSMO_FSM_TERM_PARENT)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: Removing from parent test(_branch1)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (other.cleanup(),_branch1.alive(),__twig1a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: scene forgets __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: removing reference __twig1a.other[0] -> root</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Received Event EV_OTHER_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (other.cleanup(),_branch1.alive(),__twig1a.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: alive(EV_OTHER_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (other.cleanup(),_branch1.alive(),__twig1a.cleanup(),root.alive(),root.other_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: EV_OTHER_GONE: Dropped reference root.other[0] = __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (other.cleanup(),_branch1.alive(),__twig1a.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Terminating (cause = OSMO_FSM_TERM_REGULAR)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Ignoring trigger to terminate: already terminating</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL ERROR test(root){alive}: Internal error while terminating child FSMs: a child FSM is stuck</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (other.cleanup(),_branch1.alive(),__twig1a.cleanup(),root.alive(),root.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: scene forgets root</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (other.cleanup(),_branch1.alive(),__twig1a.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (other.cleanup(),_branch1.alive(),__twig1a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (other.cleanup(),2*_branch1.alive(),__twig1a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (other.cleanup(),2*_branch1.alive(),__twig1a.cleanup(),_branch1.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[0] = __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: No more children</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (other.cleanup(),2*_branch1.alive(),__twig1a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Ignoring trigger to terminate: already terminating</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (other.cleanup(),_branch1.alive(),__twig1a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (other.cleanup(),_branch1.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Removing from parent test(root)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (other.cleanup(),_branch1.alive(),_branch1.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: scene forgets _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (other.cleanup(),_branch1.alive(),_branch1.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (other.cleanup(),_branch1.alive(),_branch1.cleanup(),root.alive(),root.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[1] = _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: No more children</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (other.cleanup(),_branch1.alive(),_branch1.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Ignoring trigger to terminate: already terminating</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (other.cleanup(),_branch1.alive(),_branch1.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (other.cleanup(),_branch1.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (other.cleanup(),_branch1.alive(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE with NULL data, must be a parent_term event. Ignore.</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (other.cleanup(),_branch1.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (other.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 0 (-)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG --- after term cascade:</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG --- all deallocated.</span><br><span style="color: hsl(120, 100%, 40%);">+*** loop_ctx contains 33 blocks, deallocating.</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG scene_alloc()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: is child of test(root)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: is child of test(_branch0)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: is child of test(_branch0)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: is child of test(root)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: is child of test(_branch1)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: is child of test(_branch1)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Allocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: _branch0.other[0] = other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: other.other[0] = _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: __twig0a.other[0] = other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: other.other[1] = __twig0a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: _branch1.other[0] = other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: other.other[1] = _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: __twig1a.other[0] = root</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: root.other[0] = __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG ------ before destroy-event cascade, got:</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   root</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig0a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig0b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   __twig1b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG   other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG ---</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG --- destroy-event at other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Received Event EV_DESTROY</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (other.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: alive(EV_DESTROY)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Terminating (cause = OSMO_FSM_TERM_REGULAR)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (other.alive(),other.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: scene forgets other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: removing reference other.other[0] -> _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_OTHER_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (other.alive(),other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_OTHER_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (other.alive(),other.cleanup(),_branch0.alive(),_branch0.other_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: EV_OTHER_GONE: Dropped reference _branch0.other[0] = other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (other.alive(),other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Terminating (cause = OSMO_FSM_TERM_REGULAR)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: Terminating (cause = OSMO_FSM_TERM_PARENT)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: Removing from parent test(_branch0)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (other.alive(),other.cleanup(),_branch0.alive(),__twig0b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: scene forgets __twig0b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup(),_branch0.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[1] = __twig0b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: still exists: child[0]</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (other.alive(),other.cleanup(),2*_branch0.alive(),__twig0b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (other.alive(),other.cleanup(),_branch0.alive(),__twig0b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (other.alive(),other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0b){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: Terminating (cause = OSMO_FSM_TERM_PARENT)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: Removing from parent test(_branch0)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: scene forgets __twig0a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: removing reference __twig0a.other[0] -> other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Received Event EV_OTHER_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: alive(EV_OTHER_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup(),other.other_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (2*other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup(),_branch0.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: EV_CHILD_GONE: Dropped reference _branch0.child[0] = __twig0a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: No more children</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (other.alive(),other.cleanup(),2*_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Ignoring trigger to terminate: already terminating</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (other.alive(),other.cleanup(),_branch0.alive(),__twig0a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (other.alive(),other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig0a){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Removing from parent test(root)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: scene forgets _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive(),root.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[0] = _branch0</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: still exists: child[1]</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (other.alive(),other.cleanup(),_branch0.alive(),_branch0.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (other.alive(),other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch0){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (other.alive(),other.cleanup(),_branch0.alive(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE with NULL data, must be a parent_term event. Ignore.</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (other.alive(),other.cleanup(),_branch0.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (other.alive(),other.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: removing reference other.other[1] -> _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_OTHER_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (other.alive(),other.cleanup(),_branch1.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_OTHER_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (other.alive(),other.cleanup(),_branch1.alive(),_branch1.other_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: EV_OTHER_GONE: Dropped reference _branch1.other[0] = other</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (other.alive(),other.cleanup(),_branch1.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Terminating (cause = OSMO_FSM_TERM_REGULAR)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: Terminating (cause = OSMO_FSM_TERM_PARENT)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: Removing from parent test(_branch1)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (other.alive(),other.cleanup(),_branch1.alive(),__twig1b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: scene forgets __twig1b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (other.alive(),other.cleanup(),2*_branch1.alive(),__twig1b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (other.alive(),other.cleanup(),2*_branch1.alive(),__twig1b.cleanup(),_branch1.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[1] = __twig1b</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: still exists: child[0]</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (other.alive(),other.cleanup(),2*_branch1.alive(),__twig1b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (other.alive(),other.cleanup(),_branch1.alive(),__twig1b.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (other.alive(),other.cleanup(),_branch1.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1b){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: Terminating (cause = OSMO_FSM_TERM_PARENT)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: Removing from parent test(_branch1)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (other.alive(),other.cleanup(),_branch1.alive(),__twig1a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: scene forgets __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: removing reference __twig1a.other[0] -> root</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Received Event EV_OTHER_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (other.alive(),other.cleanup(),_branch1.alive(),__twig1a.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: alive(EV_OTHER_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (other.alive(),other.cleanup(),_branch1.alive(),__twig1a.cleanup(),root.alive(),root.other_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: EV_OTHER_GONE: Dropped reference root.other[0] = __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (other.alive(),other.cleanup(),_branch1.alive(),__twig1a.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Terminating (cause = OSMO_FSM_TERM_REGULAR)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: pre_term()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Ignoring trigger to terminate: already terminating</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL ERROR test(root){alive}: Internal error while terminating child FSMs: a child FSM is stuck</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (other.alive(),other.cleanup(),_branch1.alive(),__twig1a.cleanup(),root.alive(),root.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: scene forgets root</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (other.alive(),other.cleanup(),_branch1.alive(),__twig1a.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (other.alive(),other.cleanup(),_branch1.alive(),__twig1a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (other.alive(),other.cleanup(),2*_branch1.alive(),__twig1a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (other.alive(),other.cleanup(),2*_branch1.alive(),__twig1a.cleanup(),_branch1.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: EV_CHILD_GONE: Dropped reference _branch1.child[0] = __twig1a</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: No more children</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (other.alive(),other.cleanup(),2*_branch1.alive(),__twig1a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Ignoring trigger to terminate: already terminating</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (other.alive(),other.cleanup(),_branch1.alive(),__twig1a.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (other.alive(),other.cleanup(),_branch1.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(__twig1a){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Removing from parent test(root)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (other.alive(),other.cleanup(),_branch1.alive(),_branch1.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: cleanup()</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: scene forgets _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (other.alive(),other.cleanup(),_branch1.alive(),_branch1.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 6 (other.alive(),other.cleanup(),_branch1.alive(),_branch1.cleanup(),root.alive(),root.child_gone())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE: Dropped reference root.child[1] = _branch1</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: No more children</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 5 (other.alive(),other.cleanup(),_branch1.alive(),_branch1.cleanup(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Ignoring trigger to terminate: already terminating</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (other.alive(),other.cleanup(),_branch1.alive(),_branch1.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (other.alive(),other.cleanup(),_branch1.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(_branch1){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: Received Event EV_CHILD_GONE</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 4 (other.alive(),other.cleanup(),_branch1.alive(),root.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: alive(EV_CHILD_GONE)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(root){alive}: EV_CHILD_GONE with NULL data, must be a parent_term event. Ignore.</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 3 (other.alive(),other.cleanup(),_branch1.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 2 (other.alive(),other.cleanup())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: cleanup() done</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 1 (other.alive())</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Freeing instance</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG test(other){alive}: Deallocated</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG 0 (-)</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG --- after destroy-event cascade:</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL DEBUG --- all deallocated.</span><br><span style="color: hsl(120, 100%, 40%);">+*** loop_ctx contains 33 blocks, deallocating.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+test_osmo_fsm_set_dealloc_ctx() done</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/libosmocore/+/15677">change 15677</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/libosmocore/+/15677"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: libosmocore </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: Ief4dba9ea587c9b4aea69993e965fbb20fb80e78 </div>
<div style="display:none"> Gerrit-Change-Number: 15677 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: neels <nhofmeyr@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>