Opened 4 years ago
#13628 new Bugs
boost::intrusive::rbtree::insert_unique() may throw, contrary to what the doc says
Reported by: | anonymous | Owned by: | Ion Gaztañaga |
---|---|---|---|
Milestone: | To Be Determined | Component: | intrusive |
Version: | Boost 1.63.0 | Severity: | Problem |
Keywords: | Cc: |
Description
The doc says:
Throws: Nothing.
but it actually may throw if the comparator throws.
seastar::memory::alloc_failure_injector::fail() at /home/tgrabiec/src/scylla/seastar/util/alloc_failure_injector.cc:38 seastar::memory::alloc_failure_injector::on_alloc_point() at /home/tgrabiec/src/scylla/seastar/util/alloc_failure_injector.hh:65 (inlined by) seastar::memory::on_alloc_point() at /home/tgrabiec/src/scylla/seastar/util/alloc_failure_injector.hh:121 (inlined by) managed_bytes::read_linearize() const at /home/tgrabiec/src/scylla/./utils/managed_bytes.hh:141 (inlined by) managed_bytes::data() const at /home/tgrabiec/src/scylla/./utils/managed_bytes.hh:396 (inlined by) managed_bytes::operator std::experimental::fundamentals_v1::basic_string_view<signed char, std::char_traits<signed char> >() const at /home/tgrabiec/src/scylla/./utils/managed_bytes.hh:337 (inlined by) dht::token_view::token_view(dht::token const&) at /home/tgrabiec/src/scylla/dht/i_partitioner.hh:151 (inlined by) dht::token::operator dht::token_view() const at /home/tgrabiec/src/scylla/dht/i_partitioner.hh:147 (inlined by) dht::decorated_key::tri_compare(schema const&, dht::decorated_key const&) const at /home/tgrabiec/src/scylla/dht/i_partitioner.cc:191 (inlined by) dht::decorated_key::less_compare(schema const&, dht::decorated_key const&) const at /home/tgrabiec/src/scylla/dht/i_partitioner.cc:217 (inlined by) dht::decorated_key::less_comparator::operator()(dht::decorated_key const&, dht::decorated_key const&) const at /home/tgrabiec/src/scylla/dht/i_partitioner.cc:226 memtable_entry::compare::operator()(memtable_entry const&, memtable_entry const&) const at /home/tgrabiec/src/scylla/memtable.hh:99 (inlined by) boost::intrusive::tree_value_compare<memtable_entry*, memtable_entry::compare, boost::move_detail::identity<memtable_entry>, true>::operator()(memtable_entry const&, memtable_entry const&) const at /usr/include/boost/intrusive/detail/tree_value_compare.hpp:147 (inlined by) bool boost::intrusive::detail::key_nodeptr_comp<memtable_entry::compare, boost::intrusive::mhtraits<memtable_entry, boost::intrusive::set_member_hook<void, void, void, void>, &memtable_entry::_link>, boost::move_detail::identity<memtable_entry> >::operator()<boost::intrusive::rbtree_node<void*>*, memtable_entry>(boost::intrusive::rbtree_node<void*>* const&, memtable_entry const&, boost::move_detail::enable_if_c<boost::intrusive::detail::key_nodeptr_comp<memtable_entry::compare, boost::intrusive::mhtraits<memtable_entry, boost::intrusive::set_member_hook<void, void, void, void>, &memtable_entry::_link>, boost::move_detail::identity<memtable_entry> >::is_same_or_nodeptr_convertible<boost::intrusive::rbtree_node<void*>*>::value&&(!boost::intrusive::detail::key_nodeptr_comp<memtable_entry::compare, boost::intrusive::mhtraits<memtable_entry, boost::intrusive::set_member_hook<void, void, void, void>, &memtable_entry::_link>, boost::move_detail::identity<memtable_entry> >::is_same_or_nodeptr_convertible<memtable_entry>::value), void>::type*) const at /usr/include/boost/intrusive/detail/key_nodeptr_comp.hpp:100 (inlined by) std::pair<boost::intrusive::rbtree_node<void*>*, bool> boost::intrusive::bstree_algorithms<boost::intrusive::rbtree_node_traits<void*, false> >::insert_unique_check<memtable_entry, boost::intrusive::detail::key_nodeptr_comp<memtable_entry::compare, boost::intrusive::mhtraits<memtable_entry, boost::intrusive::set_member_hook<void, void, void, void>, &memtable_entry::_link>, boost::move_detail::identity<memtable_entry> > >(boost::intrusive::rbtree_node<void*> const* const&, boost::intrusive::rbtree_node<void*>* const&, memtable_entry const&, boost::intrusive::detail::key_nodeptr_comp<memtable_entry::compare, boost::intrusive::mhtraits<memtable_entry, boost::intrusive::set_member_hook<void, void, void, void>, &memtable_entry::_link>, boost::move_detail::identity<memtable_entry> >, boost::intrusive::insert_commit_data_t<boost::intrusive::rbtree_node<void*>*>&, unsigned long*) at /usr/include/boost/intrusive/bstree_algorithms.hpp:1083 (inlined by) boost::intrusive::bstree_impl<boost::intrusive::mhtraits<memtable_entry, boost::intrusive::set_member_hook<void, void, void, void>, &memtable_entry::_link>, void, memtable_entry::compare, unsigned long, true, (boost::intrusive::algo_types)5, void>::insert_unique(boost::intrusive::tree_iterator<boost::intrusive::mhtraits<memtable_entry, boost::intrusive::set_member_hook<void, void, void, void>, &memtable_entry::_link>, true>, memtable_entry&) at /usr/include/boost/intrusive/bstree.hpp:1153
Note:
See TracTickets
for help on using tickets.