[msm] exit points & favor compile time policy
Hi, I faced to a strange problem. I'm working with root fsm & child fsm. Child fsm has an exit point called "End". I use vs2012u3, boost 1.54 transition table from root looks like that: struct Waiting : state<> {}; // Child is typedef for back-end struct transition_table : public boost::mpl::vector< ... Row < Waiting, begin, Child >, Row < Child::exit_ptChild::End, none, Waiting >, ...
{};
So, when I use F-C-T- policy, the Child fsm is stuck in Child::End state, the root fsm never moves to Waiting again. It doesn't happen with default policy. I noticed, that there is a note in msm's changelog From V2.24 to V2.25 (Boost 1.54) • Bugfix: Exit points broken for the favor_compile_time policy. looks similar to my case. Christophe, can you check that bugfix?
Hi,
I faced to a strange problem. I'm working with root fsm & child fsm. Child fsm has an exit point called "End". I use vs2012u3, boost 1.54
transition table from root looks like that:
struct Waiting : state<> {};
// Child is typedef for back-end
struct transition_table : public boost::mpl::vector< ... Row < Waiting, begin, Child >, Row < Child::exit_ptChild::End, none, Waiting >, ...
{};
So, when I use F-C-T- policy, the Child fsm is stuck in Child::End state, the root fsm never moves to Waiting again. It doesn't happen with default policy.
I noticed, that there is a note in msm's changelog From V2.24 to V2.25 (Boost 1.54) • Bugfix: Exit points broken for the favor_compile_time policy.
looks similar to my case.
Christophe, can you check that bugfix?
Hi, hmmm that's strange because yes there was a bug, and it has been fixed and tested by the one who reported it. I also just checked again my tests and they're ok. I could not reproduce your problem. Can you post the complete code? I'm missing the definition of End, I suspect something with "none". Unfortunately I'm on the way to vacations so I don't know if I'll manage to debug as good as at home, it could take a little longer. Cheers, Christophe
On 09.08.2013 0:39, Christophe Henry wrote:
Hi,
hmmm that's strange because yes there was a bug, and it has been fixed and tested by the one who reported it. I also just checked again my tests and they're ok. I could not reproduce your problem. Can you post the complete code? I'm missing the definition of End, I suspect something with "none".
The complete code is too big. It has three deep levels and around 40
states. I'll try to simplify it to provide the test.
the End state is declared as:
using namespace boost::msm::front;
struct Child_ : public state_machine_def
Unfortunately I'm on the way to vacations so I don't know if I'll manage to debug as good as at home, it could take a little longer.
Cheers, Christophe
The complete code is too big. It has three deep levels and around 40 states. I'll try to simplify it to provide the test.
the End state is declared as:
<snip> Hi, I tried to reproduce your problem but didn't manage, so we'll have to go step by step and see what differences we have. Attached a little test program. I tried what you had, using none as event coming out of the pseudo exit, and with/without none in the child fsm. Does it look like your case? And if yes, does it work for you? And if yes again, what differences do you see with your code? HTH, Christophe
participants (3)
-
Alexander Mingalev
-
Christophe Henry
-
Sam Fisher