arq5x / bedtools

A powerful toolset for genome arithmetic.
http://code.google.com/p/bedtools/
GNU General Public License v2.0
139 stars 86 forks source link

ERROR: LeakSanitizer: detected memory leaks with bedtools intersect #128

Open blaiseli opened 6 years ago

blaiseli commented 6 years ago

I'm using bedtools intersect (v2.27.1-1-gb87c465-dirty compiled from git latest source) on two bed filed that seem normal (http://paste.ubuntu.com/p/GxPWFb9Vby/ and http://paste.ubuntu.com/p/3Ndz5jkmrW/), and I get a strange error:

$ bedtools intersect -a results_prg1KO/bowtie2/mapped_C_elegans/WTF9_1/piRNA_perfect_matches_on_C_elegans.bed -b /pasteur/entites/Mhe/Genomes/C_elegans/Caenorhabditis_elegans/Ensembl/WBcel235/Annotation/Genes/protein_coding.bed -f 1.0 -S > /tmp/result.bed

=================================================================
==25214==ERROR: LeakSanitizer: detected memory leaks

Direct leak of 48 byte(s) in 2 object(s) allocated from:
    #0 0x7fc6c474c532 in operator new(unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x99532)
    #1 0x4b70d1 in FileRecordMgr::open(bool) (/home/bli/src/bedtools2/bin/bedtools+0x4b70d1)

Indirect leak of 8790016 byte(s) in 29696 object(s) allocated from:
    #0 0x7fc6c474c532 in operator new(unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x99532)
    #1 0x5365e0 in RecordMgr::allocateRecord() (/home/bli/src/bedtools2/bin/bedtools+0x5365e0)

Indirect leak of 237568 byte(s) in 464 object(s) allocated from:
    #0 0x7fc6c474c532 in operator new(unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x99532)
    #1 0x536692 in RecordMgr::allocateRecord() (/home/bli/src/bedtools2/bin/bedtools+0x536692)

Indirect leak of 10368 byte(s) in 2 object(s) allocated from:
    #0 0x7fc6c474c532 in operator new(unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x99532)
    #1 0x538d44 in RecordMgr::allocateRecord() (/home/bli/src/bedtools2/bin/bedtools+0x538d44)

Indirect leak of 8192 byte(s) in 2 object(s) allocated from:
    #0 0x7fc6c474c532 in operator new(unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x99532)
    #1 0x5312eb in RecordMgr::RecordMgr(FileRecordTypeChecker::RECORD_TYPE, int) (/home/bli/src/bedtools2/bin/bedtools+0x5312eb)

Indirect leak of 2640 byte(s) in 66 object(s) allocated from:
    #0 0x7fc6c474c532 in operator new(unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x99532)
    #1 0x4c1dde in std::_Rb_tree_iterator<std::pair<FileRecordTypeChecker::RECORD_TYPE const, bool> > std::_Rb_tree<FileRecordTypeChecker::RECORD_TYPE, std::pair<FileRecordTypeChecker::RECORD_TYPE const, bool>, std::_Select1st<std::pair<FileRecordTypeChecker::RECORD_TYPE const, bool> >, std::less<FileRecordTypeChecker::RECORD_TYPE>, std::allocator<std::pair<FileRecordTypeChecker::RECORD_TYPE const, bool> > >::_M_emplace_hint_unique<std::piecewise_construct_t const&, std::tuple<FileRecordTypeChecker::RECORD_TYPE&&>, std::tuple<> >(std::_Rb_tree_const_iterator<std::pair<FileRecordTypeChecker::RECORD_TYPE const, bool> >, std::piecewise_construct_t const&, std::tuple<FileRecordTypeChecker::RECORD_TYPE&&>&&, std::tuple<>&&) (/home/bli/src/bedtools2/bin/bedtools+0x4c1dde)

Indirect leak of 1024 byte(s) in 2 object(s) allocated from:
    #0 0x7fc6c474c532 in operator new(unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x99532)
    #1 0x528c71 in std::_Deque_base<EmptyRecord*, std::allocator<EmptyRecord*> >::_M_create_nodes(EmptyRecord***, EmptyRecord***) [clone .isra.204] (/home/bli/src/bedtools2/bin/bedtools+0x528c71)

Indirect leak of 527 byte(s) in 17 object(s) allocated from:
    #0 0x7fc6c474c532 in operator new(unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x99532)
    #1 0x7fc6c4233498 in std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_mutate(unsigned long, unsigned long, char const*, unsigned long) (/usr/lib/x86_64-linux-gnu/libstdc++.so.6+0x11f498)

Indirect leak of 432 byte(s) in 6 object(s) allocated from:
    #0 0x7fc6c474c532 in operator new(unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x99532)
    #1 0x4c2450 in std::_Rb_tree_iterator<std::pair<FileRecordTypeChecker::RECORD_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > std::_Rb_tree<FileRecordTypeChecker::RECORD_TYPE, std::pair<FileRecordTypeChecker::RECORD_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::_Select1st<std::pair<FileRecordTypeChecker::RECORD_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::less<FileRecordTypeChecker::RECORD_TYPE>, std::allocator<std::pair<FileRecordTypeChecker::RECORD_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::_M_emplace_hint_unique<std::piecewise_construct_t const&, std::tuple<FileRecordTypeChecker::RECORD_TYPE&&>, std::tuple<> >(std::_Rb_tree_const_iterator<std::pair<FileRecordTypeChecker::RECORD_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::piecewise_construct_t const&, std::tuple<FileRecordTypeChecker::RECORD_TYPE&&>&&, std::tuple<>&&) (/home/bli/src/bedtools2/bin/bedtools+0x4c2450)

Indirect leak of 224 byte(s) in 2 object(s) allocated from:
    #0 0x7fc6c474c532 in operator new(unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x99532)
    #1 0x52e861 in RecordMgr::RecordMgr(FileRecordTypeChecker::RECORD_TYPE, int) (/home/bli/src/bedtools2/bin/bedtools+0x52e861)

Indirect leak of 216 byte(s) in 3 object(s) allocated from:
    #0 0x7fc6c474c532 in operator new(unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x99532)
    #1 0x4c2b40 in std::_Rb_tree_iterator<std::pair<FileRecordTypeChecker::FILE_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > std::_Rb_tree<FileRecordTypeChecker::FILE_TYPE, std::pair<FileRecordTypeChecker::FILE_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::_Select1st<std::pair<FileRecordTypeChecker::FILE_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::less<FileRecordTypeChecker::FILE_TYPE>, std::allocator<std::pair<FileRecordTypeChecker::FILE_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::_M_emplace_hint_unique<std::piecewise_construct_t const&, std::tuple<FileRecordTypeChecker::FILE_TYPE&&>, std::tuple<> >(std::_Rb_tree_const_iterator<std::pair<FileRecordTypeChecker::FILE_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::piecewise_construct_t const&, std::tuple<FileRecordTypeChecker::FILE_TYPE&&>&&, std::tuple<>&&) (/home/bli/src/bedtools2/bin/bedtools+0x4c2b40)
    #2 0xb3b36f6504a909ff  (<unknown module>)

Indirect leak of 144 byte(s) in 2 object(s) allocated from:
    #0 0x7fc6c474c532 in operator new(unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x99532)
    #1 0x4c2450 in std::_Rb_tree_iterator<std::pair<FileRecordTypeChecker::RECORD_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > std::_Rb_tree<FileRecordTypeChecker::RECORD_TYPE, std::pair<FileRecordTypeChecker::RECORD_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::_Select1st<std::pair<FileRecordTypeChecker::RECORD_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::less<FileRecordTypeChecker::RECORD_TYPE>, std::allocator<std::pair<FileRecordTypeChecker::RECORD_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::_M_emplace_hint_unique<std::piecewise_construct_t const&, std::tuple<FileRecordTypeChecker::RECORD_TYPE&&>, std::tuple<> >(std::_Rb_tree_const_iterator<std::pair<FileRecordTypeChecker::RECORD_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::piecewise_construct_t const&, std::tuple<FileRecordTypeChecker::RECORD_TYPE&&>&&, std::tuple<>&&) (/home/bli/src/bedtools2/bin/bedtools+0x4c2450)
    #2 0x7fffaa6442df  (<unknown module>)

Indirect leak of 72 byte(s) in 1 object(s) allocated from:
    #0 0x7fc6c474c532 in operator new(unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x99532)
    #1 0x4c2b40 in std::_Rb_tree_iterator<std::pair<FileRecordTypeChecker::FILE_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > std::_Rb_tree<FileRecordTypeChecker::FILE_TYPE, std::pair<FileRecordTypeChecker::FILE_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::_Select1st<std::pair<FileRecordTypeChecker::FILE_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::less<FileRecordTypeChecker::FILE_TYPE>, std::allocator<std::pair<FileRecordTypeChecker::FILE_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::_M_emplace_hint_unique<std::piecewise_construct_t const&, std::tuple<FileRecordTypeChecker::FILE_TYPE&&>, std::tuple<> >(std::_Rb_tree_const_iterator<std::pair<FileRecordTypeChecker::FILE_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::piecewise_construct_t const&, std::tuple<FileRecordTypeChecker::FILE_TYPE&&>&&, std::tuple<>&&) (/home/bli/src/bedtools2/bin/bedtools+0x4c2b40)
    #2 0xc2e00001fb4  (<unknown module>)

Indirect leak of 72 byte(s) in 1 object(s) allocated from:
    #0 0x7fc6c474c532 in operator new(unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x99532)
    #1 0x4c2b40 in std::_Rb_tree_iterator<std::pair<FileRecordTypeChecker::FILE_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > std::_Rb_tree<FileRecordTypeChecker::FILE_TYPE, std::pair<FileRecordTypeChecker::FILE_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::_Select1st<std::pair<FileRecordTypeChecker::FILE_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::less<FileRecordTypeChecker::FILE_TYPE>, std::allocator<std::pair<FileRecordTypeChecker::FILE_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::_M_emplace_hint_unique<std::piecewise_construct_t const&, std::tuple<FileRecordTypeChecker::FILE_TYPE&&>, std::tuple<> >(std::_Rb_tree_const_iterator<std::pair<FileRecordTypeChecker::FILE_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::piecewise_construct_t const&, std::tuple<FileRecordTypeChecker::FILE_TYPE&&>&&, std::tuple<>&&) (/home/bli/src/bedtools2/bin/bedtools+0x4c2b40)
    #2 0x61700000fc7f  (<unknown module>)

Indirect leak of 72 byte(s) in 1 object(s) allocated from:
    #0 0x7fc6c474c532 in operator new(unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x99532)
    #1 0x4c2b40 in std::_Rb_tree_iterator<std::pair<FileRecordTypeChecker::FILE_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > std::_Rb_tree<FileRecordTypeChecker::FILE_TYPE, std::pair<FileRecordTypeChecker::FILE_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::_Select1st<std::pair<FileRecordTypeChecker::FILE_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::less<FileRecordTypeChecker::FILE_TYPE>, std::allocator<std::pair<FileRecordTypeChecker::FILE_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::_M_emplace_hint_unique<std::piecewise_construct_t const&, std::tuple<FileRecordTypeChecker::FILE_TYPE&&>, std::tuple<> >(std::_Rb_tree_const_iterator<std::pair<FileRecordTypeChecker::FILE_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::piecewise_construct_t const&, std::tuple<FileRecordTypeChecker::FILE_TYPE&&>&&, std::tuple<>&&) (/home/bli/src/bedtools2/bin/bedtools+0x4c2b40)
    #2 0x6465622e736e6166  (<unknown module>)

Indirect leak of 72 byte(s) in 1 object(s) allocated from:
    #0 0x7fc6c474c532 in operator new(unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x99532)
    #1 0x4c2450 in std::_Rb_tree_iterator<std::pair<FileRecordTypeChecker::RECORD_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > std::_Rb_tree<FileRecordTypeChecker::RECORD_TYPE, std::pair<FileRecordTypeChecker::RECORD_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::_Select1st<std::pair<FileRecordTypeChecker::RECORD_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::less<FileRecordTypeChecker::RECORD_TYPE>, std::allocator<std::pair<FileRecordTypeChecker::RECORD_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::_M_emplace_hint_unique<std::piecewise_construct_t const&, std::tuple<FileRecordTypeChecker::RECORD_TYPE&&>, std::tuple<> >(std::_Rb_tree_const_iterator<std::pair<FileRecordTypeChecker::RECORD_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::piecewise_construct_t const&, std::tuple<FileRecordTypeChecker::RECORD_TYPE&&>&&, std::tuple<>&&) (/home/bli/src/bedtools2/bin/bedtools+0x4c2450)
    #2 0x702f315f39465456  (<unknown module>)

Indirect leak of 72 byte(s) in 1 object(s) allocated from:
    #0 0x7fc6c474c532 in operator new(unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x99532)
    #1 0x4c2450 in std::_Rb_tree_iterator<std::pair<FileRecordTypeChecker::RECORD_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > std::_Rb_tree<FileRecordTypeChecker::RECORD_TYPE, std::pair<FileRecordTypeChecker::RECORD_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::_Select1st<std::pair<FileRecordTypeChecker::RECORD_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::less<FileRecordTypeChecker::RECORD_TYPE>, std::allocator<std::pair<FileRecordTypeChecker::RECORD_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::_M_emplace_hint_unique<std::piecewise_construct_t const&, std::tuple<FileRecordTypeChecker::RECORD_TYPE&&>, std::tuple<> >(std::_Rb_tree_const_iterator<std::pair<FileRecordTypeChecker::RECORD_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::piecewise_construct_t const&, std::tuple<FileRecordTypeChecker::RECORD_TYPE&&>&&, std::tuple<>&&) (/home/bli/src/bedtools2/bin/bedtools+0x4c2450)
    #2 0x7fffaa64426f  (<unknown module>)

Indirect leak of 72 byte(s) in 1 object(s) allocated from:
    #0 0x7fc6c474c532 in operator new(unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x99532)
    #1 0x4c2450 in std::_Rb_tree_iterator<std::pair<FileRecordTypeChecker::RECORD_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > std::_Rb_tree<FileRecordTypeChecker::RECORD_TYPE, std::pair<FileRecordTypeChecker::RECORD_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::_Select1st<std::pair<FileRecordTypeChecker::RECORD_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::less<FileRecordTypeChecker::RECORD_TYPE>, std::allocator<std::pair<FileRecordTypeChecker::RECORD_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::_M_emplace_hint_unique<std::piecewise_construct_t const&, std::tuple<FileRecordTypeChecker::RECORD_TYPE&&>, std::tuple<> >(std::_Rb_tree_const_iterator<std::pair<FileRecordTypeChecker::RECORD_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::piecewise_construct_t const&, std::tuple<FileRecordTypeChecker::RECORD_TYPE&&>&&, std::tuple<>&&) (/home/bli/src/bedtools2/bin/bedtools+0x4c2450)
    #2 0x74616d5f74636565  (<unknown module>)

Indirect leak of 72 byte(s) in 1 object(s) allocated from:
    #0 0x7fc6c474c532 in operator new(unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x99532)
    #1 0x4c2b40 in std::_Rb_tree_iterator<std::pair<FileRecordTypeChecker::FILE_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > std::_Rb_tree<FileRecordTypeChecker::FILE_TYPE, std::pair<FileRecordTypeChecker::FILE_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::_Select1st<std::pair<FileRecordTypeChecker::FILE_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::less<FileRecordTypeChecker::FILE_TYPE>, std::allocator<std::pair<FileRecordTypeChecker::FILE_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::_M_emplace_hint_unique<std::piecewise_construct_t const&, std::tuple<FileRecordTypeChecker::FILE_TYPE&&>, std::tuple<> >(std::_Rb_tree_const_iterator<std::pair<FileRecordTypeChecker::FILE_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::piecewise_construct_t const&, std::tuple<FileRecordTypeChecker::FILE_TYPE&&>&&, std::tuple<>&&) (/home/bli/src/bedtools2/bin/bedtools+0x4c2b40)

Indirect leak of 72 byte(s) in 1 object(s) allocated from:
    #0 0x7fc6c474c532 in operator new(unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x99532)
    #1 0x4c2450 in std::_Rb_tree_iterator<std::pair<FileRecordTypeChecker::RECORD_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > std::_Rb_tree<FileRecordTypeChecker::RECORD_TYPE, std::pair<FileRecordTypeChecker::RECORD_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::_Select1st<std::pair<FileRecordTypeChecker::RECORD_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::less<FileRecordTypeChecker::RECORD_TYPE>, std::allocator<std::pair<FileRecordTypeChecker::RECORD_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::_M_emplace_hint_unique<std::piecewise_construct_t const&, std::tuple<FileRecordTypeChecker::RECORD_TYPE&&>, std::tuple<> >(std::_Rb_tree_const_iterator<std::pair<FileRecordTypeChecker::RECORD_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::piecewise_construct_t const&, std::tuple<FileRecordTypeChecker::RECORD_TYPE&&>&&, std::tuple<>&&) (/home/bli/src/bedtools2/bin/bedtools+0x4c2450)
    #2 0x7fffaa64425f  (<unknown module>)

Indirect leak of 72 byte(s) in 1 object(s) allocated from:
    #0 0x7fc6c474c532 in operator new(unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x99532)
    #1 0x4c2450 in std::_Rb_tree_iterator<std::pair<FileRecordTypeChecker::RECORD_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > std::_Rb_tree<FileRecordTypeChecker::RECORD_TYPE, std::pair<FileRecordTypeChecker::RECORD_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::_Select1st<std::pair<FileRecordTypeChecker::RECORD_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::less<FileRecordTypeChecker::RECORD_TYPE>, std::allocator<std::pair<FileRecordTypeChecker::RECORD_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::_M_emplace_hint_unique<std::piecewise_construct_t const&, std::tuple<FileRecordTypeChecker::RECORD_TYPE&&>, std::tuple<> >(std::_Rb_tree_const_iterator<std::pair<FileRecordTypeChecker::RECORD_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::piecewise_construct_t const&, std::tuple<FileRecordTypeChecker::RECORD_TYPE&&>&&, std::tuple<>&&) (/home/bli/src/bedtools2/bin/bedtools+0x4c2450)
    #2 0x405d31  (/home/bli/src/bedtools2/bin/bedtools+0x405d31)

Indirect leak of 72 byte(s) in 1 object(s) allocated from:
    #0 0x7fc6c474c532 in operator new(unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x99532)
    #1 0x4c2450 in std::_Rb_tree_iterator<std::pair<FileRecordTypeChecker::RECORD_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > std::_Rb_tree<FileRecordTypeChecker::RECORD_TYPE, std::pair<FileRecordTypeChecker::RECORD_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::_Select1st<std::pair<FileRecordTypeChecker::RECORD_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::less<FileRecordTypeChecker::RECORD_TYPE>, std::allocator<std::pair<FileRecordTypeChecker::RECORD_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::_M_emplace_hint_unique<std::piecewise_construct_t const&, std::tuple<FileRecordTypeChecker::RECORD_TYPE&&>, std::tuple<> >(std::_Rb_tree_const_iterator<std::pair<FileRecordTypeChecker::RECORD_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::piecewise_construct_t const&, std::tuple<FileRecordTypeChecker::RECORD_TYPE&&>&&, std::tuple<>&&) (/home/bli/src/bedtools2/bin/bedtools+0x4c2450)
    #2 0x6167656c655f435e  (<unknown module>)

Indirect leak of 72 byte(s) in 1 object(s) allocated from:
    #0 0x7fc6c474c532 in operator new(unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x99532)
    #1 0x4c2450 in std::_Rb_tree_iterator<std::pair<FileRecordTypeChecker::RECORD_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > std::_Rb_tree<FileRecordTypeChecker::RECORD_TYPE, std::pair<FileRecordTypeChecker::RECORD_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::_Select1st<std::pair<FileRecordTypeChecker::RECORD_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::less<FileRecordTypeChecker::RECORD_TYPE>, std::allocator<std::pair<FileRecordTypeChecker::RECORD_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::_M_emplace_hint_unique<std::piecewise_construct_t const&, std::tuple<FileRecordTypeChecker::RECORD_TYPE&&>, std::tuple<> >(std::_Rb_tree_const_iterator<std::pair<FileRecordTypeChecker::RECORD_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::piecewise_construct_t const&, std::tuple<FileRecordTypeChecker::RECORD_TYPE&&>&&, std::tuple<>&&) (/home/bli/src/bedtools2/bin/bedtools+0x4c2450)
    #2 0x7fc6c581c9cf  (<unknown module>)

Indirect leak of 72 byte(s) in 1 object(s) allocated from:
    #0 0x7fc6c474c532 in operator new(unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x99532)
    #1 0x4c2450 in std::_Rb_tree_iterator<std::pair<FileRecordTypeChecker::RECORD_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > std::_Rb_tree<FileRecordTypeChecker::RECORD_TYPE, std::pair<FileRecordTypeChecker::RECORD_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::_Select1st<std::pair<FileRecordTypeChecker::RECORD_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::less<FileRecordTypeChecker::RECORD_TYPE>, std::allocator<std::pair<FileRecordTypeChecker::RECORD_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::_M_emplace_hint_unique<std::piecewise_construct_t const&, std::tuple<FileRecordTypeChecker::RECORD_TYPE&&>, std::tuple<> >(std::_Rb_tree_const_iterator<std::pair<FileRecordTypeChecker::RECORD_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::piecewise_construct_t const&, std::tuple<FileRecordTypeChecker::RECORD_TYPE&&>&&, std::tuple<>&&) (/home/bli/src/bedtools2/bin/bedtools+0x4c2450)
    #2 0x60300000efdf  (<unknown module>)

Indirect leak of 72 byte(s) in 1 object(s) allocated from:
    #0 0x7fc6c474c532 in operator new(unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x99532)
    #1 0x4c2450 in std::_Rb_tree_iterator<std::pair<FileRecordTypeChecker::RECORD_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > std::_Rb_tree<FileRecordTypeChecker::RECORD_TYPE, std::pair<FileRecordTypeChecker::RECORD_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::_Select1st<std::pair<FileRecordTypeChecker::RECORD_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::less<FileRecordTypeChecker::RECORD_TYPE>, std::allocator<std::pair<FileRecordTypeChecker::RECORD_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::_M_emplace_hint_unique<std::piecewise_construct_t const&, std::tuple<FileRecordTypeChecker::RECORD_TYPE&&>, std::tuple<> >(std::_Rb_tree_const_iterator<std::pair<FileRecordTypeChecker::RECORD_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::piecewise_construct_t const&, std::tuple<FileRecordTypeChecker::RECORD_TYPE&&>&&, std::tuple<>&&) (/home/bli/src/bedtools2/bin/bedtools+0x4c2450)
    #2 0x5f414e5269702f30  (<unknown module>)

Indirect leak of 72 byte(s) in 1 object(s) allocated from:
    #0 0x7fc6c474c532 in operator new(unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x99532)
    #1 0x4c2450 in std::_Rb_tree_iterator<std::pair<FileRecordTypeChecker::RECORD_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > std::_Rb_tree<FileRecordTypeChecker::RECORD_TYPE, std::pair<FileRecordTypeChecker::RECORD_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::_Select1st<std::pair<FileRecordTypeChecker::RECORD_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::less<FileRecordTypeChecker::RECORD_TYPE>, std::allocator<std::pair<FileRecordTypeChecker::RECORD_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::_M_emplace_hint_unique<std::piecewise_construct_t const&, std::tuple<FileRecordTypeChecker::RECORD_TYPE&&>, std::tuple<> >(std::_Rb_tree_const_iterator<std::pair<FileRecordTypeChecker::RECORD_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::piecewise_construct_t const&, std::tuple<FileRecordTypeChecker::RECORD_TYPE&&>&&, std::tuple<>&&) (/home/bli/src/bedtools2/bin/bedtools+0x4c2450)
    #2 0x7fffaa6442ef  (<unknown module>)

Indirect leak of 72 byte(s) in 1 object(s) allocated from:
    #0 0x7fc6c474c532 in operator new(unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x99532)
    #1 0x4c2450 in std::_Rb_tree_iterator<std::pair<FileRecordTypeChecker::RECORD_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > std::_Rb_tree<FileRecordTypeChecker::RECORD_TYPE, std::pair<FileRecordTypeChecker::RECORD_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::_Select1st<std::pair<FileRecordTypeChecker::RECORD_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::less<FileRecordTypeChecker::RECORD_TYPE>, std::allocator<std::pair<FileRecordTypeChecker::RECORD_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::_M_emplace_hint_unique<std::piecewise_construct_t const&, std::tuple<FileRecordTypeChecker::RECORD_TYPE&&>, std::tuple<> >(std::_Rb_tree_const_iterator<std::pair<FileRecordTypeChecker::RECORD_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::piecewise_construct_t const&, std::tuple<FileRecordTypeChecker::RECORD_TYPE&&>&&, std::tuple<>&&) (/home/bli/src/bedtools2/bin/bedtools+0x4c2450)
    #2 0x472113 in std::_Rb_tree<int, std::pair<int const, int>, std::_Select1st<std::pair<int const, int> >, std::less<int>, std::allocator<std::pair<int const, int> > >::_M_get_insert_unique_pos(int const&) (/home/bli/src/bedtools2/bin/bedtools+0x472113)

Indirect leak of 72 byte(s) in 1 object(s) allocated from:
    #0 0x7fc6c474c532 in operator new(unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x99532)
    #1 0x4c2b40 in std::_Rb_tree_iterator<std::pair<FileRecordTypeChecker::FILE_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > std::_Rb_tree<FileRecordTypeChecker::FILE_TYPE, std::pair<FileRecordTypeChecker::FILE_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::_Select1st<std::pair<FileRecordTypeChecker::FILE_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::less<FileRecordTypeChecker::FILE_TYPE>, std::allocator<std::pair<FileRecordTypeChecker::FILE_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::_M_emplace_hint_unique<std::piecewise_construct_t const&, std::tuple<FileRecordTypeChecker::FILE_TYPE&&>, std::tuple<> >(std::_Rb_tree_const_iterator<std::pair<FileRecordTypeChecker::FILE_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::piecewise_construct_t const&, std::tuple<FileRecordTypeChecker::FILE_TYPE&&>&&, std::tuple<>&&) (/home/bli/src/bedtools2/bin/bedtools+0x4c2b40)
    #2 0x100000000000000  (<unknown module>)

Indirect leak of 72 byte(s) in 1 object(s) allocated from:
    #0 0x7fc6c474c532 in operator new(unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x99532)
    #1 0x4c2b40 in std::_Rb_tree_iterator<std::pair<FileRecordTypeChecker::FILE_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > std::_Rb_tree<FileRecordTypeChecker::FILE_TYPE, std::pair<FileRecordTypeChecker::FILE_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::_Select1st<std::pair<FileRecordTypeChecker::FILE_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::less<FileRecordTypeChecker::FILE_TYPE>, std::allocator<std::pair<FileRecordTypeChecker::FILE_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::_M_emplace_hint_unique<std::piecewise_construct_t const&, std::tuple<FileRecordTypeChecker::FILE_TYPE&&>, std::tuple<> >(std::_Rb_tree_const_iterator<std::pair<FileRecordTypeChecker::FILE_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::piecewise_construct_t const&, std::tuple<FileRecordTypeChecker::FILE_TYPE&&>&&, std::tuple<>&&) (/home/bli/src/bedtools2/bin/bedtools+0x4c2b40)
    #2 0x8983bf  (/home/bli/src/bedtools2/bin/bedtools+0x8983bf)

Indirect leak of 72 byte(s) in 1 object(s) allocated from:
    #0 0x7fc6c474c532 in operator new(unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x99532)
    #1 0x4c2450 in std::_Rb_tree_iterator<std::pair<FileRecordTypeChecker::RECORD_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > std::_Rb_tree<FileRecordTypeChecker::RECORD_TYPE, std::pair<FileRecordTypeChecker::RECORD_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::_Select1st<std::pair<FileRecordTypeChecker::RECORD_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::less<FileRecordTypeChecker::RECORD_TYPE>, std::allocator<std::pair<FileRecordTypeChecker::RECORD_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::_M_emplace_hint_unique<std::piecewise_construct_t const&, std::tuple<FileRecordTypeChecker::RECORD_TYPE&&>, std::tuple<> >(std::_Rb_tree_const_iterator<std::pair<FileRecordTypeChecker::RECORD_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::piecewise_construct_t const&, std::tuple<FileRecordTypeChecker::RECORD_TYPE&&>&&, std::tuple<>&&) (/home/bli/src/bedtools2/bin/bedtools+0x4c2450)
    #2 0x5f7365686374616c  (<unknown module>)

Indirect leak of 72 byte(s) in 1 object(s) allocated from:
    #0 0x7fc6c474c532 in operator new(unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x99532)
    #1 0x4c2b40 in std::_Rb_tree_iterator<std::pair<FileRecordTypeChecker::FILE_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > std::_Rb_tree<FileRecordTypeChecker::FILE_TYPE, std::pair<FileRecordTypeChecker::FILE_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::_Select1st<std::pair<FileRecordTypeChecker::FILE_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::less<FileRecordTypeChecker::FILE_TYPE>, std::allocator<std::pair<FileRecordTypeChecker::FILE_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::_M_emplace_hint_unique<std::piecewise_construct_t const&, std::tuple<FileRecordTypeChecker::FILE_TYPE&&>, std::tuple<> >(std::_Rb_tree_const_iterator<std::pair<FileRecordTypeChecker::FILE_TYPE const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::piecewise_construct_t const&, std::tuple<FileRecordTypeChecker::FILE_TYPE&&>&&, std::tuple<>&&) (/home/bli/src/bedtools2/bin/bedtools+0x4c2b40)
    #2 0x5e63df  (/home/bli/src/bedtools2/bin/bedtools+0x5e63df)

SUMMARY: AddressSanitizer: 9052767 byte(s) leaked in 30283 allocation(s).

Before compiling, I modify the makefile as follows:

sed -i 's|^export CXXFLAGS =\(.*\) \$(INCLUDES)$|export CXXFLAGS =\1 -march=native -fomit-frame-pointer -fsanitize=address $(INCLUDES)|g' Makefile

I then compile it as follows:

INCLUDES="-I${HOME}/include -L${HOME}/lib" LDFLAGS="-Wl,-rpath,${HOME}/lib" make

I don't remember the reason why I had to add the -fsanitize=address flag. I usually don't put it for the tools I compile from source, so it was probably due to some issues I had with an earlier version of bedtools. It remains true that without this flag, the compilation fails. I don't know to what extent it may be due to the specificities of my local installation.