Closed yashi closed 4 months ago
hmmm vtable is 0x0
(gdb) p *it
$14 = {<eprosima::fastrtps::rtps::Endpoint> = {_vptr.Endpoint = 0x0, mp_RTPSParticipant = 0x0, m_guid = {guidPrefix = {
static size = 12, value = "\001\017\355\242*\030[\227\000\000\000"}, entityId = {static size = 4,
value = "\000\000\037\003"}}, m_att = {
_vptr.EndpointAttributes = 0x7ffff42dd240 <vtable for eprosima::fastrtps::rtps::EndpointAttributes+16>,
endpointKind = eprosima::fastrtps::rtps::WRITER, topicKind = eprosima::fastrtps::rtps::NO_KEY,
reliabilityKind = eprosima::fastrtps::rtps::RELIABLE, durabilityKind = eprosima::fastrtps::rtps::VOLATILE,
persistence_guid = {guidPrefix = {static size = 12, value = '\000' <repeats 11 times>}, entityId = {static size = 4,
value = "\000\000\000"}}, unicastLocatorList = {m_locators = std::vector of length 3, capacity 3 = {{kind = 16,
port = 7661, address = "U\355\242", '\000' <repeats 12 times>}, {kind = 1, port = 7661,
address = '\000' <repeats 12 times>, "\n\036", <incomplete sequence \310>}, {kind = 1, port = 7661,
address = '\000' <repeats 12 times>, "\300\003\006\024"}}}, multicastLocatorList = {
m_locators = std::vector of length 0, capacity 0}, remoteLocatorList = {
m_locators = std::vector of length 1, capacity 1 = {{kind = 1, port = 0,
address = '\000' <repeats 12 times>, "\357\377\000\001"}}}, properties = {
properties_ = std::vector of length 1, capacity 1 = {{name_ = "topic_name",
value_ = "\000\000\000\000\212i\217\277\000\000\000\000\004gk?\000\000", propagate_ = false}},
binary_properties_ = std::vector of length 0, capacity 0}, m_userDefinedID = -1, m_entityID = -1,
datasharing_ = {<eprosima::fastdds::dds::Parameter_t> = {
_vptr.Parameter_t = 0x7ffff57e7318 <vtable for eprosima::fastdds::dds::DataSharingQosPolicy+16>,
Pid = eprosima::fastdds::dds::PID_DATASHARING, length = 0}, <eprosima::fastdds::dds::QosPolicy> = {
_vptr.QosPolicy = 0x7ffff57e7340 <vtable for eprosima::fastdds::dds::DataSharingQosPolicy+56>, hasChanged = false,
send_always_ = true}, kind_ = eprosima::fastdds::dds::OFF, shm_directory_ = "", max_domains_ = 0,
domain_ids_ = std::vector of length 0, capacity 0}}, mp_mutex = {<std::__recursive_mutex_base> = {_M_mutex = {
__data = {__lock = 0, __count = 0, __owner = 0, __nusers = 0, __kind = 1, __spins = 0, __elision = 0, __list = {
__prev = 0x0, __next = 0x0}}, __size = '\000' <repeats 16 times>, "\001", '\000' <repeats 22 times>,
__align = 0}}, <std::__timed_mutex_impl<std::recursive_timed_mutex>> = {<No data fields>}, <No data fields>},
payload_pool_ = std::shared_ptr<eprosima::fastrtps::rtps::IPayloadPool> (use count 8, weak count 1) = {
get() = 0x55555586f020},
change_pool_ = std::shared_ptr<eprosima::fastrtps::rtps::IChangePool> (use count 1, weak count 0) = {
get() = 0x555555980330},
fixed_payload_size_ = 0}, <eprosima::fastdds::statistics::StatisticsWriterImpl> = {<No data fields>},
liveliness_lost_status_ = {total_count = 0, total_count_change = 0}, m_pushMode = true, flow_controller_ = 0x5555556665e0,
mp_history = 0x55555597cea0, mp_listener = 0x55555597fb40, is_async_ = false, m_separateSendingEnabled = false,
liveliness_kind_ = eprosima::fastdds::dds::AUTOMATIC_LIVELINESS_QOS, liveliness_lease_duration_ = {
static INFINITE_SECONDS = 2147483647, static INFINITE_NANOSECONDS = 4294967295, seconds = 2147483647,
nanosec = 4294967295}, liveliness_announcement_period_ = {static INFINITE_SECONDS = 2147483647,
static INFINITE_NANOSECONDS = 4294967295, seconds = 2147483647, nanosec = 4294967295}, next_ = {0x0, 0x0}}
Never mind. I found where I broke the memory. Sorry about the noise!
Is there an already existing issue for this?
Expected behavior
No segfault.
Current behavior
It segfaults.
Steps to reproduce
I don't have public code nor minimal reproducible example yet. but running
ros2_control_node
with attached configuration seems trigger it.Fast DDS version/commit
❯ git describe v2.3.0-api-478-gcf40a06eb
Platform/Architecture
Other. Please specify in Additional context section.
Transport layer
Default configuration, UDPv4 & SHM
Additional context
Working with micro-ROS and Moveit Servo on Humble. My code works when
ROS_DOMAIN_ID
is not set or set to0
. But as soon as I setROS_DOMAIN_ID
with non zero, I see the segfault.XML configuration file
servo-controllers.yaml
ros2_control: 2a4d81dc1308b5526990fbda4ef02d6c4a0b2b32 with the following diff:
With
unset ROS_DOMAIN_ID