Subject: [Boost-bugs] [Boost C++ Libraries] #2907: Events no longer reach orthogonal inner state after leaving that state and then returning to it
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2009-04-03 10:10:22
#2907: Events no longer reach orthogonal inner state after leaving that state and
then returning to it
--------------------------------------------------------------------------+-
Reporter: George van Venrooij <george.van.venrooij_at_[hidden]> | Owner: andreas_huber69
Type: Bugs | Status: new
Milestone: To Be Determined | Component: statechart
Version: Boost 1.37.0 | Severity: Problem
Keywords: event fowarding orthogonal inner state |
--------------------------------------------------------------------------+-
See attached file for an example of the bug.
A state-machine contains a state "parent".
"parent" consists of two orthogonal states with initial states "child1A"
and "child2A".
There is one event "update" that is handled by both "child1A" and "parent"
through custom reactions. "child1A" completes its reaction by returning
"forward_event", "parent" does so by returning "discard_event".
When initialized in this manner, the state machine consists of the states
"parent" -> "child1A" + "child2A".
Processing an "update" event correctly triggers reactions first in
"child1A" and then in "parent".
Processing a "toggle" event causes state "child1A" to transit to
"child1B", so the machine now contains the following states:
"parent" -> "child1B" + "child2A"
"child1B" does not handle "update" events and thus, when processing an
"update" event, the expected reaction in "parent" is called.
However, if processing a "toggle" event again, which causes state
"child1B" to transit back to state "child1A", causes a problem.
I would expect the statemachine to be back in the state:
"parent" -> "child1A" + "child2A"
and debugger inspection tells me it is.
However, when now processing an "update" event, the reaction in "child1A"
is NOT called, but should be.
Removing state "child2A" from the state-machine and thus not having any
orthogonal regions in "parent" causes the bug to disappear.
-- Ticket URL: <https://svn.boost.org/trac/boost/ticket/2907> Boost C++ Libraries <http://www.boost.org/> Boost provides free peer-reviewed portable C++ source libraries.
This archive was generated by hypermail 2.1.7 : 2017-02-16 18:49:59 UTC