https://code.google.com/p/singularity-viewer/issues/detail?id=848 If advance_state is called, then the state is NOT changed (only sub_state_w->advance_state is set), but sub_state_w->skip_idle is set to true in order to ignore the next call to idle (if the state machine is already in the middle of executing a state). Therefore, this assert would trigger. The solution is to not trigger when skip_idle is set.