Skip to content

Conversation

@DennisOSRM
Copy link
Collaborator

@DennisOSRM DennisOSRM commented May 6, 2024

  • used environment is updated to ubuntu-22.04
  • support for GCC 8, 9, and 10 is dropped
  • drop 32 bit build support
  • fix a couple of minor code issues
  • add empty asan suppressions file for future use
  • migrate debug asan/ubsan ci action to clang-15. it exhibits greater stability

@DennisOSRM
Copy link
Collaborator Author

Finds the following misaligned access:


2024-05-06T20:26:49.3921341Z /usr/local/include/oneapi/tbb/parallel_invoke.h:40:5: runtime error: reference binding to misaligned address 0x7f306cf18e60 for type 'struct __as_base ', which requires 64 byte alignment
2024-05-06T20:26:49.3922397Z 0x7f306cf18e60: note: pointer points here
2024-05-06T20:26:49.3922992Z  00 00 00 00  80 0a 00 00 d0 61 00 00  00 00 00 00 00 00 00 00  98 19 00 00 00 00 00 00  00 00 00 00
2024-05-06T20:26:49.3923505Z               ^ 
2024-05-06T20:26:49.3924010Z     #0 0x55d759a87481 in function_invoker /usr/local/include/oneapi/tbb/parallel_invoke.h:40
2024-05-06T20:26:49.3925845Z     #1 0x55d759a8794c in invoke_recursive_separation<osrm::contractor::(anonymous namespace)::ContractorNodeData::Renumber(const std::vector<unsigned int>&)::<lambda()>, osrm::contractor::(anonymous namespace)::ContractorNodeData::Renumber(const std::vector<unsigned int>&)::<lambda()> > /usr/local/include/oneapi/tbb/parallel_invoke.h:149
2024-05-06T20:26:49.3930078Z     #2 0x55d759a8afa3 in invoke_recursive_separation<osrm::contractor::(anonymous namespace)::ContractorNodeData::Renumber(const std::vector<unsigned int>&)::<lambda()>, osrm::contractor::(anonymous namespace)::ContractorNodeData::Renumber(const std::vector<unsigned int>&)::<lambda()>, osrm::contractor::(anonymous namespace)::ContractorNodeData::Renumber(const std::vector<unsigned int>&)::<lambda()>, osrm::contractor::(anonymous namespace)::ContractorNodeData::Renumber(const std::vector<unsigned int>&)::<lambda()>, osrm::contractor::(anonymous namespace)::ContractorNodeData::Renumber(const std::vector<unsigned int>&)::<lambda()> > /usr/local/include/oneapi/tbb/parallel_invoke.h:177
2024-05-06T20:26:49.3937150Z     #3 0x55d759a8b14f in parallel_invoke_impl<osrm::contractor::(anonymous namespace)::ContractorNodeData::Renumber(const std::vector<unsigned int>&)::<lambda()>, osrm::contractor::(anonymous namespace)::ContractorNodeData::Renumber(const std::vector<unsigned int>&)::<lambda()>, osrm::contractor::(anonymous namespace)::ContractorNodeData::Renumber(const std::vector<unsigned int>&)::<lambda()>, osrm::contractor::(anonymous namespace)::ContractorNodeData::Renumber(const std::vector<unsigned int>&)::<lambda()>, osrm::contractor::(anonymous namespace)::ContractorNodeData::Renumber(const std::vector<unsigned int>&)::<lambda()> > /usr/local/include/oneapi/tbb/parallel_invoke.h:194
2024-05-06T20:26:49.3941484Z     #4 0x55d759a8b33f in operator() /usr/local/include/oneapi/tbb/parallel_invoke.h:207
2024-05-06T20:26:49.3947285Z     #5 0x55d759a8b57f in parallel_invoke<osrm::contractor::(anonymous namespace)::ContractorNodeData::Renumber(const std::vector<unsigned int>&)::<lambda()>, osrm::contractor::(anonymous namespace)::ContractorNodeData::Renumber(const std::vector<unsigned int>&)::<lambda()>, osrm::contractor::(anonymous namespace)::ContractorNodeData::Renumber(const std::vector<unsigned int>&)::<lambda()>, osrm::contractor::(anonymous namespace)::ContractorNodeData::Renumber(const std::vector<unsigned int>&)::<lambda()>, osrm::contractor::(anonymous namespace)::ContractorNodeData::Renumber(const std::vector<unsigned int>&)::<lambda()> > /usr/local/include/oneapi/tbb/parallel_invoke.h:216
2024-05-06T20:26:49.3953422Z     #6 0x55d759a8b875 in Renumber /home/runner/work/osrm-backend/osrm-backend/src/contractor/graph_contractor.cpp:63
2024-05-06T20:26:49.3955451Z     #7 0x55d759a94b71 in RenumberData /home/runner/work/osrm-backend/osrm-backend/src/contractor/graph_contractor.cpp:413
2024-05-06T20:26:49.3959847Z     #8 0x55d759ab7c81 in osrm::contractor::contractGraph(osrm::util::DynamicGraph<osrm::contractor::ContractorEdgeData>&, std::vector<bool, std::allocator<bool> >, std::vector<bool, std::allocator<bool> >, std::vector<osrm::Alias<int, tag::edge_weight>, std::allocator<osrm::Alias<int, tag::edge_weight> > >, double) /home/runner/work/osrm-backend/osrm-backend/src/contractor/graph_contractor.cpp:652
2024-05-06T20:26:49.3966171Z     #9 0x55d7599db174 in osrm::contractor::contractGraph(osrm::util::DynamicGraph<osrm::contractor::ContractorEdgeData>&, std::vector<bool, std::allocator<bool> >, std::vector<osrm::Alias<int, tag::edge_weight>, std::allocator<osrm::Alias<int, tag::edge_weight> > >, double) (/home/runner/work/osrm-backend/osrm-backend/build-osrm/osrm-contract+0xdab174) (BuildId: e208148b0c1d4f6c861e07889df51db50bef32e6)
2024-05-06T20:26:49.3973301Z     #10 0x55d759a6c4ac in osrm::contractor::contractExcludableGraph(osrm::util::DynamicGraph<osrm::contractor::ContractorEdgeData>, std::vector<osrm::Alias<int, tag::edge_weight>, std::allocator<osrm::Alias<int, tag::edge_weight> > >, std::vector<std::vector<bool, std::allocator<bool> >, std::allocator<std::vector<bool, std::allocator<bool> > > > const&) (/home/runner/work/osrm-backend/osrm-backend/build-osrm/osrm-contract+0xe3c4ac) (BuildId: e208148b0c1d4f6c861e07889df51db50bef32e6)
2024-05-06T20:26:49.3977986Z     #11 0x55d7599aa1af in osrm::contractor::Contractor::Run() /home/runner/work/osrm-backend/osrm-backend/src/contractor/contractor.cpp:104
2024-05-06T20:26:49.3980422Z     #12 0x55d7599a63ee in osrm::contract(osrm::contractor::ContractorConfig const&) /home/runner/work/osrm-backend/osrm-backend/src/osrm/contractor.cpp:10
2024-05-06T20:26:49.3982457Z     #13 0x55d75993d2cd in main /home/runner/work/osrm-backend/osrm-backend/src/tools/contract.cpp:190
2024-05-06T20:26:49.3984482Z     #14 0x7f306ec29d8f  (/lib/x86_64-linux-gnu/libc.so.6+0x29d8f) (BuildId: 962015aa9d133c6cbcfb31ec300596d7f44d3348)
2024-05-06T20:26:49.3986489Z     #15 0x7f306ec29e3f in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e3f) (BuildId: 962015aa9d133c6cbcfb31ec300596d7f44d3348)
2024-05-06T20:26:49.3988789Z     #16 0x55d759939cf4 in _start (/home/runner/work/osrm-backend/osrm-backend/build-osrm/osrm-contract+0xd09cf4) (BuildId: e208148b0c1d4f6c861e07889df51db50bef32e6)
2024-05-06T20:26:49.3990088Z 

@DennisOSRM
Copy link
Collaborator Author

DennisOSRM commented May 7, 2024

And this seems to be the offending piece of code. Apparently the lambdas need to be 64 byte (not bit) aligned:

{
    tbb::parallel_invoke(
            [&] { util::inplacePermutation(priorities.begin(), priorities.end(), old_to_new); },
            [&] { util::inplacePermutation(weights.begin(), weights.end(), old_to_new); },
            [&] { util::inplacePermutation(is_core.begin(), is_core.end(), old_to_new); },
            [&] { util::inplacePermutation(contractable.begin(), contractable.end(), old_to_new); },
            [&] { util::inplacePermutation(depths.begin(), depths.end(), old_to_new); });
}

@SiarheiFedartsou
Copy link
Member

@DennisOSRM AFAIR there is should be a way to suppress it for the time being if you don't want to invest time into it right now...

@DennisOSRM
Copy link
Collaborator Author

@DennisOSRM AFAIR there is should be a way to suppress it for the time being if you don't want to invest time into it right now...

Good point. I'll timebox the investigation 😉

@DennisOSRM DennisOSRM merged commit 7096918 into master May 10, 2024
@DennisOSRM DennisOSRM deleted the gcc_11_12_13 branch May 10, 2024 18:38
eliseier pushed a commit to wanderlog/osrm-backend that referenced this pull request Mar 25, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants