$ g++ -O0 -ggdb -o test test.cpp $ valgrind -- ./test ==20889== Memcheck, a memory error detector ==20889== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al. ==20889== Using Valgrind-3.13.0 and LibVEX; rerun with -h for copyright info ==20889== Command: ./test ==20889== ==20889== Invalid write of size 8 ==20889== at 0x1160AE: void boost::movelib::detail_adaptive::initialize_keys >(unsigned long*, unsigned long*, boost::movelib::detail_adaptive::less, boost::movelib::detail_adaptive::adaptive_xbuf&) (adaptive_sort_merge.hpp:871) ==20889== by 0x112CAF: void boost::movelib::detail_adaptive::combine_params >(unsigned long*, boost::movelib::detail_adaptive::less, unsigned long, unsigned long, unsigned long, boost::movelib::detail_adaptive::adaptive_xbuf&, unsigned long&, unsigned long&, unsigned long&, unsigned long&, bool) (adaptive_sort_merge.hpp:922) ==20889== by 0x10FE68: void boost::movelib::detail_adaptive::adaptive_merge_combine_blocks, unsigned long, boost::move_detail::identity >, boost::movelib::detail_adaptive::adaptive_xbuf >(unsigned long*, boost::movelib::iterator_traits::size_type, boost::movelib::iterator_traits::size_type, boost::movelib::iterator_traits::size_type, boost::movelib::iterator_traits::size_type, boost::movelib::iterator_traits::size_type, bool, bool, boost::container::dtl::flat_tree_value_compare, unsigned long, boost::move_detail::identity >, boost::movelib::detail_adaptive::adaptive_xbuf&) (adaptive_merge.hpp:83) ==20889== by 0x10E954: void boost::movelib::detail_adaptive::adaptive_merge_impl, unsigned long, boost::move_detail::identity >, boost::movelib::detail_adaptive::adaptive_xbuf >(unsigned long*, boost::movelib::iterator_traits::size_type, boost::movelib::iterator_traits::size_type, boost::container::dtl::flat_tree_value_compare, unsigned long, boost::move_detail::identity >, boost::movelib::detail_adaptive::adaptive_xbuf&) (adaptive_merge.hpp:264) ==20889== by 0x10D176: void boost::movelib::adaptive_merge, unsigned long, boost::move_detail::identity > >(unsigned long*, unsigned long*, unsigned long*, boost::container::dtl::flat_tree_value_compare, unsigned long, boost::move_detail::identity >, boost::movelib::iterator_traits::value_type*, unsigned long) (adaptive_merge.hpp:312) ==20889== by 0x10AB40: void boost::container::dtl::flat_tree_container_inplace_merge, void>, boost::container::dtl::flat_tree_value_compare, unsigned long, boost::move_detail::identity > >(boost::container::vector, void>&, boost::container::vector, void>::iterator, boost::container::dtl::flat_tree_value_compare, unsigned long, boost::move_detail::identity >, boost::move_detail::bool_) (flat_tree.hpp:133) ==20889== by 0x1097EE: void boost::container::dtl::flat_tree, std::less, boost::container::new_allocator >::insert_unique >(boost::container::vec_iterator, boost::container::vec_iterator) (flat_tree.hpp:887) ==20889== by 0x10916F: insert > (flat_set.hpp:695) ==20889== by 0x10916F: main (test.cpp:20) ==20889== Address 0x5b3d4a8 is 0 bytes after a block of size 280 alloc'd ==20889== at 0x4C2D54F: operator new(unsigned long) (vg_replace_malloc.c:334) ==20889== by 0x113D3A: boost::container::new_allocator::allocate(unsigned long) (new_allocator.hpp:145) ==20889== by 0x10D42B: allocate (allocator_traits.hpp:293) ==20889== by 0x10D42B: allocate (vector.hpp:413) ==20889== by 0x10D42B: boost::container::vec_iterator boost::container::vector, void>::priv_forward_range_insert_no_capacity, boost::container::vec_iterator, unsigned long*> >(unsigned long* const&, unsigned long, boost::container::dtl::insert_range_proxy, boost::container::vec_iterator, unsigned long*>, boost::move_detail::integral_constant) (vector.hpp:2717) ==20889== by 0x10AD09: boost::container::vec_iterator boost::container::vector, void>::priv_forward_range_insert, boost::container::vec_iterator, unsigned long*> >(unsigned long* const&, unsigned long, boost::container::dtl::insert_range_proxy, boost::container::vec_iterator, unsigned long*>) (vector.hpp:2783) ==20889== by 0x109DED: boost::container::vec_iterator boost::container::vector, void>::insert >(boost::container::vec_iterator, boost::container::vec_iterator, boost::container::vec_iterator, boost::move_detail::disable_if_or, unsigned long>, boost::container::dtl::is_input_iterator, boost::container::dtl::has_iterator_category >::value>, boost::move_detail::bool_, boost::move_detail::bool_ >::type*) (vector.hpp:1953) ==20889== by 0x1095C6: void boost::container::dtl::flat_tree, std::less, boost::container::new_allocator >::insert_unique >(boost::container::vec_iterator, boost::container::vec_iterator) (flat_tree.hpp:876) ==20889== by 0x10916F: insert > (flat_set.hpp:695) ==20889== by 0x10916F: main (test.cpp:20) ==20889== ==20889== Invalid read of size 8 ==20889== at 0x116216: bool boost::movelib::detail_adaptive::less::operator()(unsigned long const&, unsigned long const&) (adaptive_sort_merge.hpp:721) ==20889== by 0x1161CF: boost::movelib::iterator_traits::size_type boost::movelib::detail_adaptive::find_next_block, unsigned long, boost::move_detail::identity > >(unsigned long*, boost::movelib::detail_adaptive::less, unsigned long*, boost::movelib::iterator_traits::size_type, boost::movelib::iterator_traits::size_type, boost::movelib::iterator_traits::size_type, boost::container::dtl::flat_tree_value_compare, unsigned long, boost::move_detail::identity >) (adaptive_sort_merge.hpp:480) ==20889== by 0x112EA3: void boost::movelib::detail_adaptive::op_merge_blocks_with_buf, unsigned long, boost::move_detail::identity >, boost::movelib::move_op, unsigned long*>(unsigned long*, boost::movelib::detail_adaptive::less, unsigned long*, boost::movelib::iterator_traits::size_type, boost::movelib::iterator_traits::size_type, boost::movelib::iterator_traits::size_type, boost::movelib::iterator_traits::size_type, boost::movelib::iterator_traits::size_type, boost::container::dtl::flat_tree_value_compare, unsigned long, boost::move_detail::identity >, boost::movelib::move_op, unsigned long*) (adaptive_sort_merge.hpp:1469) ==20889== by 0x10FEDF: void boost::movelib::detail_adaptive::adaptive_merge_combine_blocks, unsigned long, boost::move_detail::identity >, boost::movelib::detail_adaptive::adaptive_xbuf >(unsigned long*, boost::movelib::iterator_traits::size_type, boost::movelib::iterator_traits::size_type, boost::movelib::iterator_traits::size_type, boost::movelib::iterator_traits::size_type, boost::movelib::iterator_traits::size_type, bool, bool, boost::container::dtl::flat_tree_value_compare, unsigned long, boost::move_detail::identity >, boost::movelib::detail_adaptive::adaptive_xbuf&) (adaptive_merge.hpp:89) ==20889== by 0x10E954: void boost::movelib::detail_adaptive::adaptive_merge_impl, unsigned long, boost::move_detail::identity >, boost::movelib::detail_adaptive::adaptive_xbuf >(unsigned long*, boost::movelib::iterator_traits::size_type, boost::movelib::iterator_traits::size_type, boost::container::dtl::flat_tree_value_compare, unsigned long, boost::move_detail::identity >, boost::movelib::detail_adaptive::adaptive_xbuf&) (adaptive_merge.hpp:264) ==20889== by 0x10D176: void boost::movelib::adaptive_merge, unsigned long, boost::move_detail::identity > >(unsigned long*, unsigned long*, unsigned long*, boost::container::dtl::flat_tree_value_compare, unsigned long, boost::move_detail::identity >, boost::movelib::iterator_traits::value_type*, unsigned long) (adaptive_merge.hpp:312) ==20889== by 0x10AB40: void boost::container::dtl::flat_tree_container_inplace_merge, void>, boost::container::dtl::flat_tree_value_compare, unsigned long, boost::move_detail::identity > >(boost::container::vector, void>&, boost::container::vector, void>::iterator, boost::container::dtl::flat_tree_value_compare, unsigned long, boost::move_detail::identity >, boost::move_detail::bool_) (flat_tree.hpp:133) ==20889== by 0x1097EE: void boost::container::dtl::flat_tree, std::less, boost::container::new_allocator >::insert_unique >(boost::container::vec_iterator, boost::container::vec_iterator) (flat_tree.hpp:887) ==20889== by 0x10916F: insert > (flat_set.hpp:695) ==20889== by 0x10916F: main (test.cpp:20) ==20889== Address 0x5b3d4a8 is 0 bytes after a block of size 280 alloc'd ==20889== at 0x4C2D54F: operator new(unsigned long) (vg_replace_malloc.c:334) ==20889== by 0x113D3A: boost::container::new_allocator::allocate(unsigned long) (new_allocator.hpp:145) ==20889== by 0x10D42B: allocate (allocator_traits.hpp:293) ==20889== by 0x10D42B: allocate (vector.hpp:413) ==20889== by 0x10D42B: boost::container::vec_iterator boost::container::vector, void>::priv_forward_range_insert_no_capacity, boost::container::vec_iterator, unsigned long*> >(unsigned long* const&, unsigned long, boost::container::dtl::insert_range_proxy, boost::container::vec_iterator, unsigned long*>, boost::move_detail::integral_constant) (vector.hpp:2717) ==20889== by 0x10AD09: boost::container::vec_iterator boost::container::vector, void>::priv_forward_range_insert, boost::container::vec_iterator, unsigned long*> >(unsigned long* const&, unsigned long, boost::container::dtl::insert_range_proxy, boost::container::vec_iterator, unsigned long*>) (vector.hpp:2783) ==20889== by 0x109DED: boost::container::vec_iterator boost::container::vector, void>::insert >(boost::container::vec_iterator, boost::container::vec_iterator, boost::container::vec_iterator, boost::move_detail::disable_if_or, unsigned long>, boost::container::dtl::is_input_iterator, boost::container::dtl::has_iterator_category >::value>, boost::move_detail::bool_, boost::move_detail::bool_ >::type*) (vector.hpp:1953) ==20889== by 0x1095C6: void boost::container::dtl::flat_tree, std::less, boost::container::new_allocator >::insert_unique >(boost::container::vec_iterator, boost::container::vec_iterator) (flat_tree.hpp:876) ==20889== by 0x10916F: insert > (flat_set.hpp:695) ==20889== by 0x10916F: main (test.cpp:20) ==20889== ==20889== Invalid read of size 8 ==20889== at 0x11621D: bool boost::movelib::detail_adaptive::less::operator()(unsigned long const&, unsigned long const&) (adaptive_sort_merge.hpp:721) ==20889== by 0x1161CF: boost::movelib::iterator_traits::size_type boost::movelib::detail_adaptive::find_next_block, unsigned long, boost::move_detail::identity > >(unsigned long*, boost::movelib::detail_adaptive::less, unsigned long*, boost::movelib::iterator_traits::size_type, boost::movelib::iterator_traits::size_type, boost::movelib::iterator_traits::size_type, boost::container::dtl::flat_tree_value_compare, unsigned long, boost::move_detail::identity >) (adaptive_sort_merge.hpp:480) ==20889== by 0x112EA3: void boost::movelib::detail_adaptive::op_merge_blocks_with_buf, unsigned long, boost::move_detail::identity >, boost::movelib::move_op, unsigned long*>(unsigned long*, boost::movelib::detail_adaptive::less, unsigned long*, boost::movelib::iterator_traits::size_type, boost::movelib::iterator_traits::size_type, boost::movelib::iterator_traits::size_type, boost::movelib::iterator_traits::size_type, boost::movelib::iterator_traits::size_type, boost::container::dtl::flat_tree_value_compare, unsigned long, boost::move_detail::identity >, boost::movelib::move_op, unsigned long*) (adaptive_sort_merge.hpp:1469) ==20889== by 0x10FEDF: void boost::movelib::detail_adaptive::adaptive_merge_combine_blocks, unsigned long, boost::move_detail::identity >, boost::movelib::detail_adaptive::adaptive_xbuf >(unsigned long*, boost::movelib::iterator_traits::size_type, boost::movelib::iterator_traits::size_type, boost::movelib::iterator_traits::size_type, boost::movelib::iterator_traits::size_type, boost::movelib::iterator_traits::size_type, bool, bool, boost::container::dtl::flat_tree_value_compare, unsigned long, boost::move_detail::identity >, boost::movelib::detail_adaptive::adaptive_xbuf&) (adaptive_merge.hpp:89) ==20889== by 0x10E954: void boost::movelib::detail_adaptive::adaptive_merge_impl, unsigned long, boost::move_detail::identity >, boost::movelib::detail_adaptive::adaptive_xbuf >(unsigned long*, boost::movelib::iterator_traits::size_type, boost::movelib::iterator_traits::size_type, boost::container::dtl::flat_tree_value_compare, unsigned long, boost::move_detail::identity >, boost::movelib::detail_adaptive::adaptive_xbuf&) (adaptive_merge.hpp:264) ==20889== by 0x10D176: void boost::movelib::adaptive_merge, unsigned long, boost::move_detail::identity > >(unsigned long*, unsigned long*, unsigned long*, boost::container::dtl::flat_tree_value_compare, unsigned long, boost::move_detail::identity >, boost::movelib::iterator_traits::value_type*, unsigned long) (adaptive_merge.hpp:312) ==20889== by 0x10AB40: void boost::container::dtl::flat_tree_container_inplace_merge, void>, boost::container::dtl::flat_tree_value_compare, unsigned long, boost::move_detail::identity > >(boost::container::vector, void>&, boost::container::vector, void>::iterator, boost::container::dtl::flat_tree_value_compare, unsigned long, boost::move_detail::identity >, boost::move_detail::bool_) (flat_tree.hpp:133) ==20889== by 0x1097EE: void boost::container::dtl::flat_tree, std::less, boost::container::new_allocator >::insert_unique >(boost::container::vec_iterator, boost::container::vec_iterator) (flat_tree.hpp:887) ==20889== by 0x10916F: insert > (flat_set.hpp:695) ==20889== by 0x10916F: main (test.cpp:20) ==20889== Address 0x5b3d4a8 is 0 bytes after a block of size 280 alloc'd ==20889== at 0x4C2D54F: operator new(unsigned long) (vg_replace_malloc.c:334) ==20889== by 0x113D3A: boost::container::new_allocator::allocate(unsigned long) (new_allocator.hpp:145) ==20889== by 0x10D42B: allocate (allocator_traits.hpp:293) ==20889== by 0x10D42B: allocate (vector.hpp:413) ==20889== by 0x10D42B: boost::container::vec_iterator boost::container::vector, void>::priv_forward_range_insert_no_capacity, boost::container::vec_iterator, unsigned long*> >(unsigned long* const&, unsigned long, boost::container::dtl::insert_range_proxy, boost::container::vec_iterator, unsigned long*>, boost::move_detail::integral_constant) (vector.hpp:2717) ==20889== by 0x10AD09: boost::container::vec_iterator boost::container::vector, void>::priv_forward_range_insert, boost::container::vec_iterator, unsigned long*> >(unsigned long* const&, unsigned long, boost::container::dtl::insert_range_proxy, boost::container::vec_iterator, unsigned long*>) (vector.hpp:2783) ==20889== by 0x109DED: boost::container::vec_iterator boost::container::vector, void>::insert >(boost::container::vec_iterator, boost::container::vec_iterator, boost::container::vec_iterator, boost::move_detail::disable_if_or, unsigned long>, boost::container::dtl::is_input_iterator, boost::container::dtl::has_iterator_category >::value>, boost::move_detail::bool_, boost::move_detail::bool_ >::type*) (vector.hpp:1953) ==20889== by 0x1095C6: void boost::container::dtl::flat_tree, std::less, boost::container::new_allocator >::insert_unique >(boost::container::vec_iterator, boost::container::vec_iterator) (flat_tree.hpp:876) ==20889== by 0x10916F: insert > (flat_set.hpp:695) ==20889== by 0x10916F: main (test.cpp:20) ==20889== ==20889== Invalid read of size 8 ==20889== at 0x116216: bool boost::movelib::detail_adaptive::less::operator()(unsigned long const&, unsigned long const&) (adaptive_sort_merge.hpp:721) ==20889== by 0x113023: void boost::movelib::detail_adaptive::op_merge_blocks_with_buf, unsigned long, boost::move_detail::identity >, boost::movelib::move_op, unsigned long*>(unsigned long*, boost::movelib::detail_adaptive::less, unsigned long*, boost::movelib::iterator_traits::size_type, boost::movelib::iterator_traits::size_type, boost::movelib::iterator_traits::size_type, boost::movelib::iterator_traits::size_type, boost::movelib::iterator_traits::size_type, boost::container::dtl::flat_tree_value_compare, unsigned long, boost::move_detail::identity >, boost::movelib::move_op, unsigned long*) (adaptive_sort_merge.hpp:1488) ==20889== by 0x10FEDF: void boost::movelib::detail_adaptive::adaptive_merge_combine_blocks, unsigned long, boost::move_detail::identity >, boost::movelib::detail_adaptive::adaptive_xbuf >(unsigned long*, boost::movelib::iterator_traits::size_type, boost::movelib::iterator_traits::size_type, boost::movelib::iterator_traits::size_type, boost::movelib::iterator_traits::size_type, boost::movelib::iterator_traits::size_type, bool, bool, boost::container::dtl::flat_tree_value_compare, unsigned long, boost::move_detail::identity >, boost::movelib::detail_adaptive::adaptive_xbuf&) (adaptive_merge.hpp:89) ==20889== by 0x10E954: void boost::movelib::detail_adaptive::adaptive_merge_impl, unsigned long, boost::move_detail::identity >, boost::movelib::detail_adaptive::adaptive_xbuf >(unsigned long*, boost::movelib::iterator_traits::size_type, boost::movelib::iterator_traits::size_type, boost::container::dtl::flat_tree_value_compare, unsigned long, boost::move_detail::identity >, boost::movelib::detail_adaptive::adaptive_xbuf&) (adaptive_merge.hpp:264) ==20889== by 0x10D176: void boost::movelib::adaptive_merge, unsigned long, boost::move_detail::identity > >(unsigned long*, unsigned long*, unsigned long*, boost::container::dtl::flat_tree_value_compare, unsigned long, boost::move_detail::identity >, boost::movelib::iterator_traits::value_type*, unsigned long) (adaptive_merge.hpp:312) ==20889== by 0x10AB40: void boost::container::dtl::flat_tree_container_inplace_merge, void>, boost::container::dtl::flat_tree_value_compare, unsigned long, boost::move_detail::identity > >(boost::container::vector, void>&, boost::container::vector, void>::iterator, boost::container::dtl::flat_tree_value_compare, unsigned long, boost::move_detail::identity >, boost::move_detail::bool_) (flat_tree.hpp:133) ==20889== by 0x1097EE: void boost::container::dtl::flat_tree, std::less, boost::container::new_allocator >::insert_unique >(boost::container::vec_iterator, boost::container::vec_iterator) (flat_tree.hpp:887) ==20889== by 0x10916F: insert > (flat_set.hpp:695) ==20889== by 0x10916F: main (test.cpp:20) ==20889== Address 0x5b3d4a8 is 0 bytes after a block of size 280 alloc'd ==20889== at 0x4C2D54F: operator new(unsigned long) (vg_replace_malloc.c:334) ==20889== by 0x113D3A: boost::container::new_allocator::allocate(unsigned long) (new_allocator.hpp:145) ==20889== by 0x10D42B: allocate (allocator_traits.hpp:293) ==20889== by 0x10D42B: allocate (vector.hpp:413) ==20889== by 0x10D42B: boost::container::vec_iterator boost::container::vector, void>::priv_forward_range_insert_no_capacity, boost::container::vec_iterator, unsigned long*> >(unsigned long* const&, unsigned long, boost::container::dtl::insert_range_proxy, boost::container::vec_iterator, unsigned long*>, boost::move_detail::integral_constant) (vector.hpp:2717) ==20889== by 0x10AD09: boost::container::vec_iterator boost::container::vector, void>::priv_forward_range_insert, boost::container::vec_iterator, unsigned long*> >(unsigned long* const&, unsigned long, boost::container::dtl::insert_range_proxy, boost::container::vec_iterator, unsigned long*>) (vector.hpp:2783) ==20889== by 0x109DED: boost::container::vec_iterator boost::container::vector, void>::insert >(boost::container::vec_iterator, boost::container::vec_iterator, boost::container::vec_iterator, boost::move_detail::disable_if_or, unsigned long>, boost::container::dtl::is_input_iterator, boost::container::dtl::has_iterator_category >::value>, boost::move_detail::bool_, boost::move_detail::bool_ >::type*) (vector.hpp:1953) ==20889== by 0x1095C6: void boost::container::dtl::flat_tree, std::less, boost::container::new_allocator >::insert_unique >(boost::container::vec_iterator, boost::container::vec_iterator) (flat_tree.hpp:876) ==20889== by 0x10916F: insert > (flat_set.hpp:695) ==20889== by 0x10916F: main (test.cpp:20) ==20889== ==20889== ==20889== HEAP SUMMARY: ==20889== in use at exit: 0 bytes in 0 blocks ==20889== total heap usage: 17 allocs, 17 frees, 73,784 bytes allocated ==20889== ==20889== All heap blocks were freed -- no leaks are possible ==20889== ==20889== For counts of detected and suppressed errors, rerun with: -v ==20889== ERROR SUMMARY: 4 errors from 4 contexts (suppressed: 0 from 0)