
On Fri, 14 Jun 2013 22:36:59 +0200, Gooding, Dustin R. (JSC-ER411)
"GripperPosition" is my state_machine. "Container" is the simple_state the state machine initially enters. Container > has no transitions, but many sub states (it's the owner of the 9 orthogonal regions). (As far as I can tell, if the state machine is alive, then "Container" is an active state.) "Container" has a handful of custom_reactions that essentially listen for user-supplied events, "forward" those events in to the appropriate orthogonal regions using internal-only events, and then discard the user-supplied events. The intention here is to have a single event propagate to multiple orthogonal regions, allowing them all to react. For example:
AFAIK boost statechart is not thread-safe, so ensure you're not processing the external events simultaneously.
I'll post back when/if I ever nail it down. It happens very infrequently, but enough to give me heartburn.
For me the assertion condition (+comment before if available) with the stacktrace at the assertion moment always explained the issue. Look at your stack trace, you'll likely see unambiguously what is causing send_event() in an unstable state. If the assertion is not reproducible all the time, I'd check for memory/threading errors with valgrind tools. -- Slava