-
Notifications
You must be signed in to change notification settings - Fork 522
Closed
Labels
bugSomething isn't workingSomething isn't working
Description
Bug report
Required Info:
- Operating System:
- Ubuntu 18.04 LTS
- Installation type:
- Binaries
- Version or commit hash:
- Eloquent
- DDS implementation:
- CycloneDDS
- Client library (if applicable):
- rclcpp
Steps to reproduce issue
I will work on creating a portable minimal environment that can reproduce this issue, since my application is somewhat complex.
I have three nodes;
- Node A contains an action server for a custom action type (for example,
MyAction) advertised on/my_action. This node uses a multi-threaded executor. The action server is assigned to a MutuallyExclusive callback group. - Node B contains a client for the same
MyActionaction on/my_action. This node uses the default single-threaded executor. - Node C also contains a
MyActionclient also pointed at/my_action. This node uses a multi-threaded executor. The action client is assigned to a Reentrant callback group.
Node B and Node C send action goals using async_send_goal. The nodes do not send goals concurrently.
Expected behavior
Normal client/server action behavior where each client sends a goal and receives a result from the server.
Actual behavior
Node C throws an exception and crashes after either Node B or Node C call async_send_goal:
terminate called after throwing an instance of `std::runtime_error`
what(): Executing action client but nothing is ready
Sometimes the error includes terminate called recursively.
Additional information
There is some discussion of this exception in #594, though a conclusive answer wasn't reached (since I expect that more info about the implementation of the nodes is needed).
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working