::check_subtree<boost::intrusive::detail::rbtree_node_checker<boost::intrusive::bhtraits<boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, long, unsigned long, 0ul>, 0ul>::block_ctrl, boost::intrusive::rbtree_node_traits<boost::interprocess::offset_ptr<void, long, unsigned long, 0ul>, true>, (boost::intrusive::link_mode_type)0, boost::intrusive::default_tag, 3u>, boost::intrusive::detail::key_nodeptr_comp<std::less<boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, long, unsigned long, 0ul>, 0ul>::block_ctrl>, boost::intrusive::bhtraits<boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, long, unsigned long, 0ul>, 0ul>::block_ctrl, boost::intrusive::rbtree_node_traits<boost::interprocess::offset_ptr<void, long, unsigned long, 0ul>, true>, (boost::intrusive::link_mode_type)0, boost::intrusive::default_tag, 3u> >, boost::intrusive::detail::empty_node_checker<boost::intrusive::bhtraits<boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, long, unsigned long, 0ul>, 0ul>::block_ctrl, boost::intrusive::rbtree_node_traits<boost::interprocess::offset_ptr<void, long, unsigned long, 0ul>, true>, (boost::intrusive::link_mode_type)0, boost::intrusive::default_tag, 3u> > > > (node=..., checker=..., check_return=...) at /home/lars/boost/modular-boost/boost/intrusive/bstree_algorithms.hpp:2088 #7 0x00007ffff7469052 in boost::intrusive::bstree_algorithms<boost::intrusive::rbtree_node_traits<boost::interprocess::offset_ptr<void, long, unsigned long, 0ul>, true> ::check<boost::intrusive::detail::rbtree_node_checker<boost::intrusive::bhtraits<boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, long, unsigned long, 0ul>, 0ul>::block_ctrl, boost::intrusive::rbtree_node_traits<boost::interprocess::offset_ptr<void, long, unsigned long, 0ul>, true>, (boost::intrusive::link_mode_type)0, boost::intrusive::default_tag, 3u>, boost::intrusive::detail::key_nodeptr_comp<std::less<boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, long, unsigned long, 0ul>, 0ul>::block_ctrl>, boost::intrusive::bhtraits<boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, long, unsigned long, 0ul>, 0ul>::block_ctrl, boost::intrusive::rbtree_node_traits<boost::interprocess::offset_ptr<void, long, unsigned long, 0ul>, true>, (boost::intrusive::link_mode_type)0, boost::intrusive::default_tag, 3u> >, boost::intrusive::detail::empty_node_checker<boost::intrusive::bhtraits<boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, long, unsigned long, 0ul>, 0ul>::block_ctrl, boost::intrusive::rbtree_node_traits<boost::interprocess::offset_ptr<void, long, unsigned long, 0ul>, true>, (boost::intrusive::link_mode_type)0, boost::intrusive::default_tag, 3u> > > > (header=..., checker=..., checker_return=...) at /home/lars/boost/modular-boost/boost/intrusive/bstree_algorithms.hpp:1504 #8 0x00007ffff746706d in boost::intrusive::bstree_impl<boost::intrusive::bhtraits<boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, long, unsigned long, 0ul>, 0ul>::block_ctrl, boost::intrusive::rbtree_node_traits<boost::interprocess::offset_ptr<void, long, unsigned long, 0ul>, true>, (boost::intrusive::link_mode_type)0, boost::intrusive::default_tag, 3u>, void, unsigned long, true, (boost::intrusive::algo_types)5, boost::intrusive::detail::default_header_holder<boost::intrusive::rbtree_node_traits<boost::interprocess::offset_ptr<void, long, unsigned long, 0ul>, true> > ::check<boost::intrusive::detail::empty_node_checker<boost::intrusive::bhtraits<boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, long, unsigned long, 0ul>, 0ul>::block_ctrl, boost::intrusive::rbtree_node_traits<boost::interprocess::offset_ptr<void, long, unsigned long, 0ul>, true>, (boost::intrusive::link_mode_type)0, boost::intrusive::default_tag, 3u> > > (this=0x7ffff2008038, extra_checker=...) at /home/lars/boost/modular-boost/boost/intrusive/bstree.hpp:1907 #9 0x00007ffff7464da8 in boost::intrusive::bstree_impl<boost::intrusive::bhtraits<boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, long, unsigned long, 0ul>, 0ul>::block_ctrl, boost::intrusive::rbtree_node_traits<boost::interprocess::offset_ptr<void, long, unsigned long, 0ul>, true>, (boost::intrusive::link_mode_type)0, boost::intrusive::default_tag, 3u>, void, unsigned long, true, (boost::intrusive::algo_types)5, boost::intrusive::detail::default_header_holder<boost::intrusive::rbtree_node_traits<boost::interprocess::offset_ptr<void, long, unsigned long, 0ul>, true> > >::check (this=0x7ffff2008038) at /home/lars/boost/modular-boost/boost/intrusive/bstree.hpp:1914 #10 0x00007ffff74623d0 in boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, long, unsigned long, 0ul>, 0ul>::priv_deallocate (this=0x7ffff2008010, addr=0x7ffff200a1c0) at /home/lars/boost/modular-boost/boost/interprocess/mem_algo/rbtree_best_fit.hpp:1411 #11 0x00007ffff745f805 in boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, long, unsigned long, 0ul>, 0ul>::deallocate (this=0x7ffff2008010, addr=0x7ffff200a1c0) at /home/lars/boost/modular-boost/boost/interprocess/mem_algo/rbtree_best_fit.hpp:1337 #12 0x00007ffff745d443 in boost::interprocess::segment_manager_base<boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, long, unsigned long, 0ul>, 0ul> ::deallocate (this=0x7ffff2008010, addr=0x7ffff200a1c0) at /home/lars/boost/modular-boost/boost/interprocess/segment_manager.hpp:225 #13 0x00007ffff745d305 in boost::interprocess::allocator<char, boost::interprocess::segment_manager<char, boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, long, unsigned long, 0ul>, 0ul>, boost::interprocess::iset_index> >::deallocate (this=0x7ffff2009cb0,
I've added more debugging to rbtree_best_fit.hpp in a fork of interprocess at github.com, DonOregano/interprocess.git Direct link to my patched file https://github.com/DonOregano/interprocess/blob/aba6893976f5be62eed0763c3036... Anyway, among the additions are the checks that I think you wanted above, that shows that prev_block and next_block are always in the multiset, as per your email. I also added logs to every priv_allocate to check that the block that we're trying to deallocate has in fact been allocated (that it is not just some random block). I also print out m_prev_size and m_size, and they're not obviously corrupted by randomness, they contain 4s and 0s etc, not wierd numbers... That doesnt really prove anything, though... I also added a check to make sure that block is not in the multiset, which it is not. Just a couple of stupid questions: Are we certain that check() is correct? And should the invariants hold midway through priv_deallocate? Just so that I've not inserted checks that are not meant to hold in that place and that this thing is a red herring? Below is the output produced by my program, with the logs added, and even further down (sorry) is the stacktrace from the failed check() call. Allocated 0x7ffff20080f0 Allocated 0x7ffff2008200 Allocated 0x7ffff2008280 Allocated 0x7ffff20082c0 Allocated priv_expand_both_sides = 0x7ffff20082c0 Allocated 0x7ffff2008310 Allocated 0x7ffff2008390 Allocated 0x7ffff20083d0 Allocated 0x7ffff2008420 Allocated 0x7ffff20084c0 Allocated 0x7ffff2008540 Allocated 0x7ffff2008580 priv_deallocate addr: 0x7ffff20083d0 block in imultiset = false block->m_prev_size = 0 block->m_size = 5 priv_deallocate addr: 0x7ffff2008390 block in imultiset = false block->m_prev_size = 0 block->m_size = 4 merge_with_prev = false, merge_with_next = true next_block in imultiset = true priv_deallocate addr: 0x7ffff2008310 block in imultiset = false block->m_prev_size = 1 block->m_size = 8 merge_with_prev = false, merge_with_next = true next_block in imultiset = true priv_deallocate addr: 0x7ffff20082c0 block in imultiset = false block->m_prev_size = 0 block->m_size = 5 merge_with_prev = false, merge_with_next = true next_block in imultiset = true priv_deallocate addr: 0x7ffff2008280 block in imultiset = false block->m_prev_size = 0 block->m_size = 4 merge_with_prev = false, merge_with_next = true next_block in imultiset = true priv_deallocate addr: 0x7ffff2008200 block in imultiset = false block->m_prev_size = 0 block->m_size = 8 merge_with_prev = false, merge_with_next = true next_block in imultiset = true Allocated 0x7ffff2008200 Allocated 0x7ffff2008280 Allocated 0x7ffff20082d0 Allocated priv_expand_both_sides = 0x7ffff20082d0 Allocated priv_expand_both_sides = 0x7ffff20082d0 Allocated 0x7ffff2008360 Allocated 0x7ffff20085d0 Allocated 0x7ffff2008620 Allocated 0x7ffff2008690 Allocated 0x7ffff2008730 Allocated 0x7ffff20087b0 Allocated 0x7ffff2008800 priv_deallocate addr: 0x7ffff2008620 block in imultiset = false block->m_prev_size = 0 block->m_size = 7 priv_deallocate addr: 0x7ffff20085d0 block in imultiset = false block->m_prev_size = 0 block->m_size = 5 merge_with_prev = false, merge_with_next = true next_block in imultiset = true priv_deallocate addr: 0x7ffff2008360 block in imultiset = false block->m_prev_size = 8389754706664715122 block->m_size = 8 merge_with_prev = false, merge_with_next = true next_block in imultiset = true priv_deallocate addr: 0x7ffff20082d0 block in imultiset = false block->m_prev_size = 0 block->m_size = 9 merge_with_prev = false, merge_with_next = true next_block in imultiset = true priv_deallocate addr: 0x7ffff2008280 block in imultiset = false block->m_prev_size = 0 block->m_size = 5 merge_with_prev = false, merge_with_next = true next_block in imultiset = true priv_deallocate addr: 0x7ffff2008200 block in imultiset = false block->m_prev_size = 0 block->m_size = 8 merge_with_prev = false, merge_with_next = true next_block in imultiset = true Allocated 0x7ffff20085d0 Allocated 0x7ffff2008640 Allocated 0x7ffff2008200 priv_deallocate addr: 0x7ffff2008640 block in imultiset = false block->m_prev_size = 0 block->m_size = 5 Allocated 0x7ffff2008290 Allocated 0x7ffff2008300 Allocated 0x7ffff2008370 Allocated 0x7ffff2008870 Allocated 0x7ffff20088e0 priv_deallocate addr: 0x7ffff2008300 block in imultiset = false block->m_prev_size = 0 block->m_size = 7 priv_deallocate addr: 0x7ffff2008290 block in imultiset = false block->m_prev_size = 0 block->m_size = 7 merge_with_prev = false, merge_with_next = true next_block in imultiset = true priv_deallocate addr: 0x7ffff2008200 block in imultiset = false block->m_prev_size = 0 block->m_size = 9 merge_with_prev = false, merge_with_next = true next_block in imultiset = true priv_deallocate addr: 0x7ffff20085d0 block in imultiset = false block->m_prev_size = 0 block->m_size = 7 merge_with_prev = false, merge_with_next = true next_block in imultiset = true Allocated 0x7ffff20085d0 Allocated 0x7ffff2008650 Allocated 0x7ffff2008200 priv_deallocate addr: 0x7ffff2008650 block in imultiset = false block->m_prev_size = 0 block->m_size = 4 Allocated priv_expand_both_sides = 0x7ffff2008200 Allocated priv_expand_both_sides = 0x7ffff2008200 Allocated priv_expand_both_sides = 0x7ffff2008200 Allocated 0x7ffff2008950 priv_deallocate addr: 0x7ffff2008200 block in imultiset = false block->m_prev_size = 0 block->m_size = 23 Allocated 0x7ffff2008200 Allocated 0x7ffff2008c20 Allocated 0x7ffff2008280 Allocated 0x7ffff2008e30 Allocated 0x7ffff2008eb0 priv_deallocate addr: 0x7ffff2008c20 block in imultiset = false block->m_prev_size = 0 block->m_size = 33 priv_deallocate addr: 0x7ffff2008200 block in imultiset = false block->m_prev_size = 0 block->m_size = 8 priv_deallocate addr: 0x7ffff2008950 block in imultiset = false block->m_prev_size = 0 block->m_size = 45 merge_with_prev = false, merge_with_next = true next_block in imultiset = true priv_deallocate addr: 0x7ffff20085d0 block in imultiset = false block->m_prev_size = 0 block->m_size = 8 merge_with_prev = false, merge_with_next = true next_block in imultiset = true Allocated 0x7ffff2008200 Allocated 0x7ffff2008320 Allocated 0x7ffff20085d0 Allocated priv_expand_both_sides = 0x7ffff20085d0 Allocated 0x7ffff2008950 Allocated 0x7ffff2008620 Allocated 0x7ffff20089d0 Allocated 0x7ffff2008a20 Allocated 0x7ffff2008ac0 Allocated 0x7ffff2008b40 Allocated 0x7ffff2008b80 priv_deallocate addr: 0x7ffff20089d0 block in imultiset = false block->m_prev_size = 0 block->m_size = 5 priv_deallocate addr: 0x7ffff2008620 block in imultiset = false block->m_prev_size = 1 block->m_size = 4 merge_with_prev = false, merge_with_next = true next_block in imultiset = true priv_deallocate addr: 0x7ffff2008950 block in imultiset = false block->m_prev_size = 0 block->m_size = 8 merge_with_prev = false, merge_with_next = true next_block in imultiset = true priv_deallocate addr: 0x7ffff20085d0 block in imultiset = false block->m_prev_size = 0 block->m_size = 5 merge_with_prev = false, merge_with_next = true next_block in imultiset = true priv_deallocate addr: 0x7ffff2008320 block in imultiset = false block->m_prev_size = 0 block->m_size = 5 priv_deallocate addr: 0x7ffff2008200 block in imultiset = false block->m_prev_size = 0 block->m_size = 8 Allocated 0x7ffff2008200 Allocated 0x7ffff2008320 Allocated 0x7ffff20085d0 Allocated priv_expand_both_sides = 0x7ffff20085d0 Allocated priv_expand_both_sides = 0x7ffff20085d0 Allocated 0x7ffff2008950 Allocated 0x7ffff20089d0 Allocated 0x7ffff2008bd0 Allocated 0x7ffff2008c60 Allocated 0x7ffff2008d00 Allocated 0x7ffff2008d80 Allocated 0x7ffff20090c0 priv_deallocate addr: 0x7ffff2008bd0 block in imultiset = false block->m_prev_size = 0 block->m_size = 9 priv_deallocate addr: 0x7ffff20089d0 block in imultiset = false block->m_prev_size = 0 block->m_size = 5 priv_deallocate addr: 0x7ffff2008950 block in imultiset = false block->m_prev_size = 0 block->m_size = 8 merge_with_prev = false, merge_with_next = true next_block in imultiset = true priv_deallocate addr: 0x7ffff20085d0 block in imultiset = false block->m_prev_size = 0 block->m_size = 9 merge_with_prev = false, merge_with_next = true next_block in imultiset = true priv_deallocate addr: 0x7ffff2008320 block in imultiset = false block->m_prev_size = 0 block->m_size = 5 priv_deallocate addr: 0x7ffff2008200 block in imultiset = false block->m_prev_size = 0 block->m_size = 8 Allocated 0x7ffff2008dc0 Allocated 0x7ffff2008320 Allocated 0x7ffff2008bd0 priv_deallocate addr: 0x7ffff2008320 block in imultiset = false block->m_prev_size = 0 block->m_size = 5 Allocated 0x7ffff2008200 Allocated 0x7ffff20085d0 Allocated 0x7ffff2008950 Allocated 0x7ffff2009150 Allocated 0x7ffff20091c0 priv_deallocate addr: 0x7ffff20085d0 block in imultiset = false block->m_prev_size = 0 block->m_size = 9 merge_with_prev = false, merge_with_next = true next_block in imultiset = true priv_deallocate addr: 0x7ffff2008200 block in imultiset = false block->m_prev_size = 0 block->m_size = 8 priv_deallocate addr: 0x7ffff2008bd0 block in imultiset = false block->m_prev_size = 0 block->m_size = 9 priv_deallocate addr: 0x7ffff2008dc0 block in imultiset = false block->m_prev_size = 0 block->m_size = 7 Allocated 0x7ffff2008dc0 Allocated 0x7ffff20089f0 Allocated 0x7ffff2008320 priv_deallocate addr: 0x7ffff20089f0 block in imultiset = false block->m_prev_size = 0 block->m_size = 3 Allocated 0x7ffff2008bd0 priv_deallocate addr: 0x7ffff2008320 block in imultiset = false block->m_prev_size = 0 block->m_size = 5 Allocated 0x7ffff2008320 Allocated 0x7ffff2009250 priv_deallocate addr: 0x7ffff2008bd0 block in imultiset = false block->m_prev_size = 0 block->m_size = 9 Allocated priv_expand_both_sides = 0x7ffff2009250 Allocated 0x7ffff2008200 Allocated 0x7ffff2008240 Allocated priv_expand_both_sides = 0x7ffff2009250 Allocated 0x7ffff2008bd0 Allocated 0x7ffff2008c10 Allocated priv_expand_both_sides = 0x7ffff2009250 Allocated 0x7ffff20085d0 Allocated 0x7ffff2008610 Allocated 0x7ffff2009a60 Allocated 0x7ffff2009ad0 Allocated 0x7ffff2008650 Allocated 0x7ffff200a180 Allocated 0x7ffff200a1c0 Allocated 0x7ffff200a200 Allocated 0x7ffff200a240 Allocated 0x7ffff200a280 Allocated 0x7ffff200a2c0 Allocated 0x7ffff200a300 Allocated 0x7ffff200a3a0 Allocated 0x7ffff200a410 Allocated 0x7ffff200aac0 Allocated 0x7ffff200ab00 Allocated 0x7ffff200ab40 Allocated 0x7ffff200ab80 Allocated 0x7ffff200abc0 Allocated 0x7ffff200ac00 Allocated 0x7ffff200ac40 priv_deallocate addr: 0x7ffff2008650 block in imultiset = false block->m_prev_size = 0 block->m_size = 4 priv_deallocate addr: 0x7ffff200a180 block in imultiset = false block->m_prev_size = 0 block->m_size = 4 priv_deallocate addr: 0x7ffff200a1c0 block in imultiset = false block->m_prev_size = 4 block->m_size = 4 merge_with_prev = true, merge_with_next = false prev_block in imultiset = true Here we fail the check() call indicated in the source. Here is a backtrace from the failed check call: #0 0x00007ffff5ab7d67 in raise () from /usr/lib/libc.so.6 #1 0x00007ffff5ab9118 in abort () from /usr/lib/libc.so.6 #2 0x00007ffff5ab0bdd in __assert_fail_base () from /usr/lib/libc.so.6 #3 0x00007ffff5ab0c92 in __assert_fail () from /usr/lib/libc.so.6 #4 0x00007ffff746e985 in boost::intrusive::detail::bstree_node_checker<boost::intrusive::bhtraits<boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, long, unsigned long, 0ul>, 0ul>::block_ctrl, boost::intrusive::rbtree_node_traits<boost::interprocess::offset_ptr<void, long, unsigned long, 0ul>, true>, (boost::intrusive::link_mode_type)0, boost::intrusive::default_tag, 3u>, boost::intrusive::detail::key_nodeptr_comp<std::less<boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, long, unsigned long, 0ul>, 0ul>::block_ctrl>, boost::intrusive::bhtraits<boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, long, unsigned long, 0ul>, 0ul>::block_ctrl, boost::intrusive::rbtree_node_traits<boost::interprocess::offset_ptr<void, long, unsigned long, 0ul>, true>, (boost::intrusive::link_mode_type)0, boost::intrusive::default_tag, 3u> >, boost::intrusive::detail::empty_node_checker<boost::intrusive::bhtraits<boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, long, unsigned long, 0ul>, 0ul>::block_ctrl, boost::intrusive::rbtree_node_traits<boost::interprocess::offset_ptr<void, long, unsigned long, 0ul>, true>, (boost::intrusive::link_mode_type)0, boost::intrusive::default_tag, 3u> > >::operator() (this=0x7fffffffd060, p=..., check_return_left=..., check_return_right=..., check_return=...) at /home/lars/boost/modular-boost/boost/intrusive/bstree_algorithms.hpp:78 #5 0x00007ffff746cf29 in boost::intrusive::detail::rbtree_node_checker<boost::intrusive::bhtraits<boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, long, unsigned long, 0ul>, 0ul>::block_ctrl, boost::intrusive::rbtree_node_traits<boost::interprocess::offset_ptr<void, long, unsigned long, 0ul>, true>, (boost::intrusive::link_mode_type)0, boost::intrusive::default_tag, 3u>, boost::intrusive::detail::key_nodeptr_comp<std::less<boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, long, unsigned long, 0ul>, 0ul>::block_ctrl>, boost::intrusive::bhtraits<boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, long, unsigned long, 0ul>, 0ul>::block_ctrl, boost::intrusive::rbtree_node_traits<boost::interprocess::offset_ptr<void, long, unsigned long, 0ul>, true>, (boost::intrusive::link_mode_type)0, boost::intrusive::default_tag, 3u> >, boost::intrusive::detail::empty_node_checker<boost::intrusive::bhtraits<boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, long, unsigned long, 0ul>, 0ul>::block_ctrl, boost::intrusive::rbtree_node_traits<boost::interprocess::offset_ptr<void, long, unsigned long, 0ul>, true>, (boost::intrusive::link_mode_type)0, boost::intrusive::default_tag, 3u> > >::operator() (this=0x7fffffffd060, p=..., check_return_left=..., check_return_right=..., check_return=...) at /home/lars/boost/modular-boost/boost/intrusive/rbtree_algorithms.hpp:88 #6 0x00007ffff746b82b in boost::intrusive::bstree_algorithms<boost::intrusive::rbtree_node_traits<boost::interprocess::offset_ptr<void, long, unsigned long, 0ul>, true> ptr=...) at /home/lars/boost/modular-boost/boost/interprocess/allocators/allocator.hpp:157 #14 0x00007ffff745ae82 in boost::container::container_detail::basic_string_base<boost::interprocess::allocator<char, boost::interprocess::segment_manager<char, boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, long, unsigned long, 0ul>, 0ul>, boost::interprocess::iset_index> > >::deallocate (this=0x7ffff2009cb0, p=..., n=56) at /home/lars/boost/modular-boost/boost/container/string.hpp:281 #15 0x00007ffff7459a1c in boost::container::container_detail::basic_string_base<boost::interprocess::allocator<char, boost::interprocess::segment_manager<char, boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, long, unsigned long, 0ul>, 0ul>, boost::interprocess::iset_index> > >::deallocate_block (this=0x7ffff2009cb0) at /home/lars/boost/modular-boost/boost/container/string.hpp:327 #16 0x00007ffff745998d in boost::container::container_detail::basic_string_base<boost::interprocess::allocator<char, boost::interprocess::segment_manager<char, boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, long, unsigned long, 0ul>, 0ul>, boost::interprocess::iset_index> > >::~basic_string_base (this=0x7ffff2009cb0, __in_chrg=<optimized out>) at /home/lars/boost/modular-boost/boost/container/string.hpp:106 #17 0x00007ffff7458cea in boost::container::basic_string<char, std::char_traits<char>, boost::interprocess::allocator<char, boost::interprocess::segment_manager<char, boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, long, unsigned long, 0ul>, 0ul>, boost::interprocess::iset_index> > >::~basic_string (this=0x7ffff2009cb0, __in_chrg=<optimized out>) at /home/lars/boost/modular-boost/boost/container/string.hpp:708 #18 0x00007ffff745f8da in boost::interprocess::allocator<boost::container::basic_string<char, std::char_traits<char>, boost::interprocess::allocator<char, boost::interprocess::segment_manager<char, boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, long, unsigned long, 0ul>, 0ul>, boost::interprocess::iset_index> > >, boost::interprocess::segment_manager<char, boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, long, unsigned long, 0ul>, 0ul>, boost::interprocess::iset_index> >::destroy (this=0x7fffffffd9e0, ptr=...) at /home/lars/boost/modular-boost/boost/interprocess/allocators/allocator.hpp:268 #19 0x00007ffff745d498 in boost::container::allocator_traits<boost::interprocess::allocator<boost::container::basic_string<char, std::char_traits<char>, boost::interprocess::allocator<char, boost::interprocess::segment_manager<char, boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, long, unsigned long, 0ul>, 0ul>, boost::interprocess::iset_index> > >, boost::interprocess::segment_manager<char, boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, long, unsigned long, 0ul>, 0ul>, boost::interprocess::iset_index> >
::priv_destroy<boost::container::basic_string<char, std::char_traits<char>, boost::interprocess::allocator<char, boost::interprocess::segment_manager<char, boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, long, unsigned long, 0ul>, 0ul>, boost::interprocess::iset_index> > > > (a=..., p=0x7ffff2009cb0) at /home/lars/boost/modular-boost/boost/container/allocator_traits.hpp:300 #20 0x00007ffff745b0b4 in boost::container::allocator_traits<boost::interprocess::allocator<boost::container::basic_string<char, std::char_traits<char>, boost::interprocess::allocator<char, boost::interprocess::segment_manager<char, boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, long, unsigned long, 0ul>, 0ul>, boost::interprocess::iset_index> > >, boost::interprocess::segment_manager<char, boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, long, unsigned long, 0ul>, 0ul>, boost::interprocess::iset_index> > ::destroy<boost::container::basic_string<char, std::char_traits<char>, boost::interprocess::allocator<char, boost::interprocess::segment_manager<char, boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, long, unsigned long, 0ul>, 0ul>, boost::interprocess::iset_index> > > > (a=..., p=0x7ffff2009cb0) at /home/lars/boost/modular-boost/boost/container/allocator_traits.hpp:242 #21 0x00007ffff7459c23 in boost::container::destroy_alloc_n<boost::interprocess::allocator<boost::container::basic_string<char, std::char_traits<char>, boost::interprocess::allocator<char, boost::interprocess::segment_manager<char, boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, long, unsigned long, 0ul>, 0ul>, boost::interprocess::iset_index> > >, boost::interprocess::segment_manager<char, boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, long, unsigned long, 0ul>, 0ul>, boost::interprocess::iset_index> >, boost::container::basic_string<char, std::char_traits<char>, boost::interprocess::allocator<char, boost::interprocess::segment_manager<char, boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, long, unsigned long, 0ul>, 0ul>, boost::interprocess::iset_index> > *>(boost::interprocess::allocator<boost::container::basic_string<char, std::char_traits<char>, boost::interprocess::allocator<char, boost::interprocess::segment_manager<char, boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, long, unsigned long, 0ul>, 0ul>, boost::interprocess::iset_index> > >, boost::interprocess::segment_manager<char, boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, long, unsigned long, 0ul>, 0ul>, boost::interprocess::iset_index> >&, boost::container::basic_string<char, std::char_traits<char>, boost::interprocess::allocator<char, boost::interprocess::segment_manager<char, boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, long, unsigned long, 0ul>, 0ul>, boost::interprocess::iset_index> > >*, std::iterator_traits<boost::container::basic_string<char, std::char_traits<char>, boost::interprocess::allocator<char, boost::interprocess::segment_manager<char, boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, long, unsigned long, 0ul>, 0ul>, boost::interprocess::iset_index> > >*>::difference_type, boost::container::container_detail::enable_if_c<!boost::has_trivial_destructor<std::iterator_traits<boost::container::basic_string<char, std::char_traits<char>, boost::interprocess::allocator<char, boost::interprocess::segment_manager<char, boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, long, unsigned long, 0ul>, 0ul>, boost::interprocess::iset_index> > >*>::value_type>::value, void>::type*) (a=..., f=0x7ffff2009cd0, n=37) at /home/lars/boost/modular-boost/boost/container/detail/utilities.hpp:1073 #22 0x00007ffff7458d3c in boost::container::vector<boost::container::basic_string<char, std::char_traits<char>, boost::interprocess::allocator<char, boost::interprocess::segment_manager<char, boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, long, unsigned long, 0ul>, 0ul>, boost::interprocess::iset_index> > >, boost::interprocess::allocator<boost::container::basic_string<char, std::char_traits<char>, boost::interprocess::allocator<char, boost::interprocess::segment_manager<char, boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, long, unsigned long, 0ul>, 0ul>, boost::interprocess::iset_index> > >, boost::interprocess::segment_manager<char, boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family, boost::interprocess::offset_ptr<void, long, unsigned long, 0ul>, 0ul>, boost::interprocess::iset_index> > >::~vector (this=0x7fffffffd9e0, __in_chrg=<optimized out>) at /home/lars/boost/modular-boost/boost/container/vector.hpp:787 #23 0x00007ffff746d82b in Safir::Dob::Typesystem::Internal::EnumDescriptionShm::~EnumDescriptionShm (this=0x7fffffffd998, __in_chrg=<optimized out>) at /home/lars/safir_sdk_core/src/dots/dots_kernel.ss/src/dots_shm_repository.h:140 #24 0x00007ffff74e7a82 in std::pair<long const, Safir::Dob::Typesystem::Internal::EnumDescriptionShm>::~pair (this=0x7fffffffd990, __in_chrg=<optimized out>) at /usr/include/c++/4.9.1/bits/stl_pair.h:96 #25 0x00007ffff74e4565 in Safir::Dob::Typesystem::Internal::RepositoryShm::CreateShmCopyOfRepository (srcRepository=..., shmRepositoryName="DOTS_REPOSITORY", sharedMemory=...) at /home/lars/safir_sdk_core/src/dots/dots_kernel.ss/src/dots_shm_repository.cpp:55 #26 0x00007ffff7456395 in Safir::Dob::Typesystem::Internal::RepositoryKeeper::Create (this=0x7ffff77d1cc0 <Safir::Dob::Typesystem::Internal::RepositoryKeeper::Instance()::instance>) at /home/lars/safir_sdk_core/src/dots/dots_kernel.ss/src/dots_repository_keeper.cpp:172 #27 0x00007ffff536dd7e in Safir::Utilities::StartupSynchronizerImpl::FirstStart (this=0x648860, synchronized=0x7ffff77d1cc0 <Safir::Dob::Typesystem::Internal::RepositoryKeeper::Instance()::instance>) at /home/lars/safir_sdk_core/src/lluf/lluf_startup_synchronizer.ss/src/StartupSynchronizer.cpp:181 #28 0x00007ffff536dbb6 in Safir::Utilities::StartupSynchronizerImpl::Start (this=0x648860, synchronized=0x7ffff77d1cc0 <Safir::Dob::Typesystem::Internal::RepositoryKeeper::Instance()::instance>) at /home/lars/safir_sdk_core/src/lluf/lluf_startup_synchronizer.ss/src/StartupSynchronizer.cpp:154 #29 0x00007ffff536aefa in Safir::Utilities::StartupSynchronizer::Start (this=0x7ffff77d1cc8 <Safir::Dob::Typesystem::Internal::RepositoryKeeper::Instance()::instance+8>, synchronized=0x7ffff77d1cc0 <Safir::Dob::Typesystem::Internal::RepositoryKeeper::Instance()::instance>) at /home/lars/safir_sdk_core/src/lluf/lluf_startup_synchronizer.ss/src/StartupSynchronizer.cpp:423 #30 0x00007ffff7455c9b in Safir::Dob::Typesystem::Internal::RepositoryKeeper::Initialize (sharedMemorySize=10485760, paths=std::vector of length 1, capacity 1 = {...}) at /home/lars/safir_sdk_core/src/dots/dots_kernel.ss/src/dots_repository_keeper.cpp:53 #31 0x00007ffff748330b in Safir::Dob::Typesystem::Internal::InitHelper::Init () at /home/lars/safir_sdk_core/src/dots/dots_kernel.ss/src/dots_init_helper.h:60 #32 0x00007ffff7485ae3 in boost::call_once<void (*)()> (flag=..., f=0x7ffff74832c1 <Safir::Dob::Typesystem::Internal::InitHelper::Init()>) at /home/lars/boost/modular-boost/boost/thread/pthread/once_atomic.hpp:149 #33 0x00007ffff7483882 in Safir::Dob::Typesystem::Internal::Init () at /home/lars/safir_sdk_core/src/dots/dots_kernel.ss/src/dots_init_helper.h:106 #34 0x00007ffff747794b in DotsC_NumberOfTypeIds () at /home/lars/safir_sdk_core/src/dots/dots_kernel.ss/src/dots_kernel.cpp:123 #35 0x0000000000419b7d in CheckConfigurationDotsKernel::SimpleCheck () at /home/lars/safir_sdk_core/src/dots/dots_configuration_check.ss/src/dots_configuration_check.cpp:108 #36 0x0000000000419b56 in CheckConfigurationDotsKernel::Run (cmd=...) at /home/lars/safir_sdk_core/src/dots/dots_configuration_check.ss/src/dots_configuration_check.cpp:99 #37 0x000000000041428a in main (argc=1, argv=0x7fffffffe628) at /home/lars/safir_sdk_core/src/dots/dots_configuration_check.ss/src/dots_configuration_check.cpp:235 (gdb)
*ugh*. What can we do to make this debugging easier? It feels a bit inefficient... I could set up a VM on for example Digital Ocean and get everything up and running, and give you the password and some instructions? Unless you prefer to do it this way, of course... Cheers Lars