Skip to content

Filter remote locators crash #6234

@ouyangshuyi1-del

Description

@ouyangshuyi1-del

Is there an already existing issue for this?

  • I have searched the existing issues

Expected behavior

Works normal

Current behavior

When i update userdate.the process crash
Bt as follow

Thread 38 (crashed)
0 libstdc++.so.6 + 0xb98b4
x0 = 0x0000007fa8008c00 x1 = 0x0000000000000000
x2 = 0x0000000000000005 x3 = 0x0000007f54000de0
x4 = 0x0000000000000008 x5 = 0x0000000000000007
x6 = 0x0000007f54001920 x7 = 0x8f735d33c5647509
x8 = 0x0000007f47ffd658 x9 = 0x0000007f54001860
x10 = 0x0000000000000000 x11 = 0x0000000000000000
x12 = 0x4150494349545241 x13 = 0x00455059545f544e
x14 = 0x0000000000000000 x15 = 0x00000000000003f8
x16 = 0x0000007fb6c53748 x17 = 0x0000007fb5b89890
x18 = 0x0000000000000001 x19 = 0x0000007fa80289a0
x20 = 0x0000007fa80289a0 x21 = 0x0000007fa8008c30
x22 = 0x0000007fa800a380 x23 = 0x0000007fa803f080
x24 = 0x0000007fa80289a0 x25 = 0x0000007fa8018c88
x26 = 0x0000007fa803eec0 x27 = 0x0000000000000000
x28 = 0x0000000000000001 fp = 0x0000007f47ffd570
lr = 0x0000007fb687cc6c sp = 0x0000007f47ffd570
pc = 0x0000007fb5b898b4
Found by: given as instruction pointer in context
1 libfastdds.so.3.2!eprosima::fastdds::rtps::network::external_locators::filter_remote_locators [stl_tree.h : 368 + 0x4]
fp = 0x0000007f47ffd7e0 lr = 0x0000007fb687cf1c
sp = 0x0000007f47ffd580 pc = 0x0000007fb687cc6c
Found by: previous frame's frame pointer
2 libfastdds.so.3.2!eprosima::fastdds::rtps::network::external_locators::filter_remote_locators(eprosima::fastdds::rtps::ParticipantProxyData&, std::map<unsigned char, std::map<unsigned char, std::vector<eprosima::fastdds::rtps::LocatorWithMask, std::allocatoreprosima::fastdds::rtps::LocatorWithMask >, std::less, std::allocator<std::pair<unsigned char const, std::vector<eprosima::fastdds::rtps::LocatorWithMask, std::allocatoreprosima::fastdds::rtps::LocatorWithMask > > > >, std::greater, std::allocator<std::pair<unsigned char const, std::map<unsigned char, std::vector<eprosima::fastdds::rtps::LocatorWithMask, std::allocatoreprosima::fastdds::rtps::LocatorWithMask >, std::less, std::allocator<std::pair<unsigned char const, std::vector<eprosima::fastdds::rtps::LocatorWithMask, std::allocatoreprosima::fastdds::rtps::LocatorWithMask > > > > > > > const&, std::map<unsigned char, std::map<unsigned char, std::vector<eprosima::fastdds::rtps::LocatorWithMask, std::allocatoreprosima::fastdds::rtps::LocatorWithMask >, std::less, std::allocator<std::pair<unsigned char const, std::vector<eprosima::fastdds::rtps::LocatorWithMask, std::allocatoreprosima::fastdds::rtps::LocatorWithMask > > > >, std::greater, std::allocator<std::pair<unsigned char const, std::map<unsigned char, std::vector<eprosima::fastdds::rtps::LocatorWithMask, std::allocatoreprosima::fastdds::rtps::LocatorWithMask >, std::less, std::allocator<std::pair<unsigned char const, std::vector<eprosima::fastdds::rtps::LocatorWithMask, std::allocatoreprosima::fastdds::rtps::LocatorWithMask > > > > > > > const&, bool) [external_locators.cpp : 332 + 0x0]
fp = 0x0000007f47ffd810 lr = 0x0000007fb67fc6f8
sp = 0x0000007f47ffd7f0 pc = 0x0000007fb687cf1c
Found by: previous frame's frame pointer
3 libfastdds.so.3.2!eprosima::fastdds::rtps::PDPListener::on_new_cache_change_added(eprosima::fastdds::rtps::RTPSReader*, eprosima::fastdds::rtps::CacheChange_t const*) [PDPListener.cpp : 133 + 0x0]
fp = 0x0000007f47ffda90 lr = 0x0000007fb68a83a0
sp = 0x0000007f47ffd820 pc = 0x0000007fb67fc6f8
Found by: previous frame's frame pointer
4 libfastdds.so.3.2!eprosima::fastdds::rtps::StatelessReader::change_received(eprosima::fastdds::rtps::CacheChange_t*) [StatelessReader.cpp : 407 + 0xc]
fp = 0x0000007f47ffdb10 lr = 0x0000007fb68ab728
sp = 0x0000007f47ffdaa0 pc = 0x0000007fb68a83a0
Found by: previous frame's frame pointer
5 libfastdds.so.3.2!eprosima::fastdds::rtps::StatelessReader::process_data_msg(eprosima::fastdds::rtps::CacheChange_t*) [StatelessReader.cpp : 678 + 0x4]
fp = 0x0000007f47ffddd0 lr = 0x0000007fb6867eac
sp = 0x0000007f47ffdb20 pc = 0x0000007fb68ab728
Found by: previous frame's frame pointer
6 libfastdds.so.3.2!eprosima::fastdds::rtps::MessageReceiver::process_data_message_without_security(eprosima::fastdds::rtps::EntityId_t const&, eprosima::fastdds::rtps::CacheChange_t&, bool) [MessageReceiver.cpp : 229 + 0xc]
fp = 0x0000007f47ffde00 lr = 0x0000007fb686cda8
sp = 0x0000007f47ffdde0 pc = 0x0000007fb6867eac
Found by: previous frame's frame pointer
7 libfastdds.so.3.2!eprosima::fastdds::rtps::MessageReceiver::proc_Submsg_Data(eprosima::fastdds::rtps::CDRMessage_t*, eprosima::fastdds::rtps::SubmessageHeader_t*, eprosima::fastdds::rtps::EntityId_t&, bool) const [std_function.h : 590 + 0x10]
fp = 0x0000007f47ffe1d0 lr = 0x0000007fb686e678
sp = 0x0000007f47ffde10 pc = 0x0000007fb686cda8
Found by: previous frame's frame pointer
8 libfastdds.so.3.2!eprosima::fastdds::rtps::MessageReceiver::processCDRMsg(eprosima::fastdds::rtps::Locator_t const&, eprosima::fastdds::rtps::Locator_t const&, eprosima::fastdds::rtps::CDRMessage_t*) [MessageReceiver.cpp : 467 + 0x0]
fp = 0x0000007f47ffe4a0 lr = 0x0000007fb687a1a8
sp = 0x0000007f47ffe1e0 pc = 0x0000007fb686e678
Found by: previous frame's frame pointer
9 libfastdds.so.3.2!eprosima::fastdds::rtps::ReceiverResource::OnDataReceived(unsigned char const*, unsigned int, eprosima::fastdds::rtps::Locator_t const&, eprosima::fastdds::rtps::Locator_t const&) [ReceiverResource.cpp : 135 + 0x0]
fp = 0x0000007f47ffe510 lr = 0x0000007fb68fd2f4
sp = 0x0000007f47ffe4b0 pc = 0x0000007fb687a1a8
Found by: previous frame's frame pointer
10 libfastdds.so.3.2!eprosima::fastdds::rtps::UDPChannelResource::perform_listen_operation(eprosima::fastdds::rtps::Locator_t) [UDPChannelResource.cpp : 78 + 0x18]
fp = 0x0000007f47ffe7b0 lr = 0x0000007fb68fd730
sp = 0x0000007f47ffe520 pc = 0x0000007fb68fd2f4
Found by: previous frame's frame pointer
11 libfastdds.so.3.2!eprosima::thread::ThreadProxy<eprosima::create_thread<eprosima::fastdds::rtps::UDPChannelResource::UDPChannelResource(eprosima::fastdds::rtps::UDPTransportInterface*, eprosima::fastdds::rtps::eProsimaUDPSocket&, uint32_t, const Locator&, const string&, eprosima::fastdds::rtps::TransportReceiverInterface*, const eprosima::fastdds::rtps::ThreadSettings&)::<lambda()>, unsigned int>(eprosima::fastdds::rtps::UDPChannelResource::UDPChannelResource(eprosima::fastdds::rtps::UDPTransportInterface*, eprosima::fastdds::rtps::eProsimaUDPSocket&, uint32_t, const Locator&, const string&, eprosima::fastdds::rtps::TransportReceiverInterface*, const eprosima::fastdds::rtps::ThreadSettings&)::<lambda()>, const eprosima::fastdds::rtps::ThreadSettings&, char const*, unsigned int)::<lambda()> > [UDPChannelResource.cpp : 48 + 0x0]
fp = 0x0000007f47ffe800 lr = 0x0000007fb59706f8
sp = 0x0000007f47ffe7c0 pc = 0x0000007fb68fd730
Found by: previous frame's frame pointer
12 libc.so.6 + 0x806f4
fp = 0x0000000000000000 lr = 0x0000007fb59d7cdc
sp = 0x0000007f47ffe810 pc = 0x0000007fb59706f8
Found by: previous frame's frame pointer

Steps to reproduce

One process update userdata
And the other part join in the domain

Fast DDS version/commit

3.2.2

Platform/Architecture

Ubuntu Focal 20.04 amd64

Transport layer

UDPv4

Additional context

No response

XML configuration file

Relevant log output

Network traffic capture

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    triageIssue pending classification

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions