rock-core / tools-roby

The roby plan manager
Other
3 stars 11 forks source link

fix exception when the same event of a task is sequentially used in two state machines #127

Closed doudou closed 4 years ago

doudou commented 5 years ago

If during execution the same event of a task is used sequentially in two state machines, the second transition will raise an exception if the first state machine has been garbage collected.

For instance, in:

action_state_machine 'test' do
   wait = state(acquire_pose)
   done = state(another).depends_on(acquire_pose)
   transition wait.pose_acquired_event, done
   done.success_event.forward_to success_event
end

if the acquire_pose toplevel task is not terminated between two runs of test, the second run would raise an exception.

doudou commented 5 years ago

@renan028 will have to write tests ...

g-arjones commented 4 years ago

It looks like there is a heisenbug in one of the tests

doudou commented 4 years ago

It looks like there is a heisenbug in one of the tests

Yeah. I've been trying to track it down, but unsuccessfully so far.