Comments (4)
Looks to me like you have a firewall blocking all multicast traffic. This causes two problems:
- Discovery no longer works (several other DDS implementations always cater for unicast discovery, but Cyclone by default doesn't if the interface supports multicast);
- Some threads are dedicated to receiving data from a single socket, and on shutdown those need to unblocked. The best mechanism I have been able to find for that is sending a packet to the socket, but that does require the IP stack to cooperate.
I suspect the hanging is caused by ROS 2's signal handler being "too nice" if the impossible happens and stopping cleanly turns out to be impossible.
I'd suggest allowing multicast, but you can also disable multicast altogether (it is just that you lose out on a lot of niceties and add a significant amount of overhead):
<General>
<AllowMulticast>false</AllowMulticast>
</General>
<Discovery>
<ParticipantIndex>auto</ParticipantIndex>
<Peers>
<Peer address="localhost"/>
</Peers>
</Discovery>
The hanging you could fix by not having threads dedicated to receiving data on a specific socket (Internal/MultipleReceiveThreads
= false), but that alone won't get make discovery work. And both options above that should make discovery work should also solve the hanging.
from rmw_cyclonedds.
I am afraid I don't (won't) have an Apertis 2022 SDK at hand. It certainly sounds like that is exhibiting some behaviour that interacts badly with Cyclone. Unusual, but not impossible.
What I usually suggest is to gather some tracing information from Cyclone DDS because that usually gives some insights in what is going on when everything works but there is no communication. Enabling it is as simple as putting
CYCLONEDDS_URI="<Tr><V>finest</><Out>cdds.log.\${CYCLONEDDS_PID}</>"
in the environment. That log starts with the configuration options, then you get some information on network selection and so on.
It is not so likely to give a clue as to why it hangs. For that, generally the best thing to do is to attach gdb
and get stack traces for all threads (thread apply all bt
) and look for something suspicious.
from rmw_cyclonedds.
For the following logs, no other node was running.
from rmw_cyclonedds.
That seems to be the problem indeed. Thank you!
from rmw_cyclonedds.
Related Issues (20)
- Composable node randomly not loading when shared memory is used.
- Galactic CycloneDDS 0.8 check_whc Assertion failed crash HOT 2
- Got "unknown source entity, ignore." when only use shared memory
- Cannot get messages when communicating crossing different machines and docker containers via multicast by defining Peers
- Error getting RMW implementation identifier HOT 6
- subscriber crashed when deserialize msg which is send by foxglove_bridge through loaned api HOT 1
- Compilation error while building ros2 humble on ubunutu 20.04 from source HOT 3
- ROS2 communication stopped between nodes on same machine when network is down HOT 3
- iceoryx subscriber - TOO_MANY_CHUNKS_HELD_IN_PARALLEL error when flooding a receiver with messages
- cyclonedds kills nodes with THREAD_STATE_ALIVE failed HOT 9
- Ubuntu Host (Humble) and Docker (Iron) communication issue - [rmw_cyclonedds_cpp]: Failed to parse type hash for topic + xmlrpc.client.ResponseError: ResponseError("unknown tag 'rclpy.type_hash.TypeHash'") HOT 4
- CycloneDDS hangs when the network interface switches to loopback HOT 5
- CycloneDDS Unnecessarily Sends Packets Through Network HOT 7
- Ros2 pub, dds sub, use zero copy HOT 1
- Failure to run certain rclpy code with rmw_cyclonedds_cpp HOT 4
- abort when running with SHM(TRUE) and MultiThreadedExecutor(CallbackGroupType::Reentrant) HOT 2
- Sorry, I mistakenly opened an issue on the wrong repository. Can you delete it?
- Memory leak when using multi threaded application HOT 1
- ROS service not receiving native DDS requests correctly HOT 1
- rqt_reconfigure params not visible with shared memory
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from rmw_cyclonedds.