Project

General

Profile

Actions

Bug #56399

closed

osd crash after restart, due to assertion in omap's list operation

Added by Xuehan Xu almost 2 years ago. Updated almost 2 years ago.

Status:
Resolved
Priority:
Normal
Assignee:
Category:
-
Target version:
-
% Done:

0%

Source:
Tags:
Backport:
Regression:
No
Severity:
3 - minor
Reviewed:
Affected Versions:
ceph-qa-suite:
Pull request ID:
Crash signature (v1):
Crash signature (v2):

Description

crimson-osd: ../src/crimson/os/seastore/omap_manager/btree/omap_btree_node_impl.cc:211: virtual crimson::os::seastore::omap_manager::OMapNode::list_ret crimson::os::seastore::omap_manager::OMapInnerNode::list(crimson::os::seastore::omap_manager::omap_context_t, const std::optional<std::__cxx11::basic_string<char> >&, crimson::os::seastore::omap_manager::OMapNode::omap_list_config_t): Assertion `child_iter != iter_cend()' failed.
Aborting on shard 0.
Backtrace:
 0# gsignal in /lib64/libc.so.6
 1# abort in /lib64/libc.so.6
 2# 0x00002B427EA9BC89 in /lib64/libc.so.6
 3# 0x00002B427EAA9A76 in /lib64/libc.so.6
 4# crimson::os::seastore::omap_manager::OMapInnerNode::list(crimson::os::seastore::omap_manager::omap_context_t, std::optional<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > const&, crimson::os::seastore::OMapManager::omap_list_config_t) at /home/xuxuehan/src/ceph/build/../src/crimson/os/seastore/omap_manager/btree/omap_btree_node_impl.cc:256
 5# auto crimson::os::seastore::omap_manager::OMapInnerNode::list(crimson::os::seastore::omap_manager::omap_context_t, std::optional<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > const&, crimson::os::seastore::OMapManager::omap_list_config_t)::{lambda(auto:1&, auto:2&, auto:3&)#1}::operator()<crimson::os::seastore::omap_manager::StringKVInnerNodeLayout::iter_t<true>, crimson::os::seastore::omap_manager::StringKVInnerNodeLayout::iter_t, std::tuple<bool, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, ceph::buffer::v15_2_0::list, std::less<void>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, ceph::buffer::v15_2_0> > > > >(crimson::os::seastore::omap_manager::StringKVInnerNodeLayout::iter_t<true>&, crimson::os::seastore::omap_manager::StringKVInnerNodeLayout::iter_t&, std::tuple<bool, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, ceph::buffer::v15_2_0::list, std::less<void>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, ceph::buffer::v15_2_0> > > >&) const::{lambda()#1}::operator()() const::{lambda(auto:1&&)#1}::operator()<boost::intrusive_ptr<crimson::os::seastore::omap_manager::OMapNode> >({lambda()#1}) const at /home/xuxuehan/src/ceph/build/../src/crimson/os/seastore/omap_manager/btree/omap_btree_node_impl.cc:250
 6# auto seastar::futurize_invoke<crimson::os::seastore::omap_manager::OMapInnerNode::list(crimson::os::seastore::omap_manager::omap_context_t, std::optional<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > const&, crimson::os::seastore::OMapManager::omap_list_config_t)::{lambda(auto:1&, auto:2&, auto:3&)#1}::operator()<crimson::os::seastore::omap_manager::StringKVInnerNodeLayout::iter_t<true>, crimson::os::seastore::omap_manager::StringKVInnerNodeLayout::iter_t, std::tuple<bool, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, ceph::buffer::v15_2_0::list, std::less<void>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, ceph::buffer::v15_2_0> > > > >(crimson::os::seastore::omap_manager::StringKVInnerNodeLayout::iter_t<true>&, crimson::os::seastore::omap_manager::StringKVInnerNodeLayout::iter_t&, std::tuple<bool, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, ceph::buffer::v15_2_0::list, std::less<void>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, ceph::buffer::v15_2_0> > > >&) const::{lambda()#1}::operator()() const::{lambda(auto:1&&)#1}, boost::intrusive_ptr<crimson::os::seastore::omap_manager::OMapNode> >({lambda()#1}, boost::intrusive_ptr<crimson::os::seastore::omap_manager::OMapNode>&&) at /home/xuxuehan/src/ceph/build/../src/crimson/common/interruptible_future.h:1525
 7# auto crimson::interruptible::internal::call_with_interruption_impl<crimson::os::seastore::TransactionConflictCondition, crimson::os::seastore::omap_manager::OMapInnerNode::list(crimson::os::seastore::omap_manager::omap_context_t, std::optional<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > const&, crimson::os::seastore::OMapManager::omap_list_config_t)::{lambda(auto:1&, auto:2&, auto:3&)#1}::operator()<crimson::os::seastore::omap_manager::StringKVInnerNodeLayout::iter_t<true>, crimson::os::seastore::omap_manager::StringKVInnerNodeLayout::iter_t, std::tuple<bool, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, ceph::buffer::v15_2_0::list, std::less<void>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, ceph::buffer::v15_2_0> > > > >(crimson::os::seastore::omap_manager::StringKVInnerNodeLayout::iter_t<true>&, crimson::os::seastore::omap_manager::StringKVInnerNodeLayout::iter_t&, std::tuple<bool, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, ceph::buffer::v15_2_0::list, std::less<void>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, ceph::buffer::v15_2_0> > > >&) const::{lambda()#1}::operator()() const::{lambda(auto:1&&)#1}, boost::intrusive_ptr<crimson::os::seastore::omap_manager::OMapNode> >(seastar::lw_shared_ptr<crimson::os::seastore::TransactionConflictCondition>, crimson::os::seastore::omap_manager::StringKVInnerNodeLayout::iter_t&&, boost::intrusive_ptr<crimson::os::seastore::omap_manager::OMapNode>&&) at /home/xuxuehan/src/ceph/build/../src/crimson/common/interruptible_future.h:193
 8# auto crimson::interruptible::call_with_interruption<crimson::os::seastore::TransactionConflictCondition, crimson::os::seastore::omap_manager::OMapInnerNode::list(crimson::os::seastore::omap_manager::omap_context_t, std::optional<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > const&, crimson::os::seastore::OMapManager::omap_list_config_t)::{lambda(auto:1&, auto:2&, auto:3&)#1}::operator()<crimson::os::seastore::omap_manager::StringKVInnerNodeLayout::iter_t<true>, crimson::os::seastore::omap_manager::StringKVInnerNodeLayout::iter_t, std::tuple<bool, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, ceph::buffer::v15_2_0::list, std::less<void>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, ceph::buffer::v15_2_0> > > > >(crimson::os::seastore::omap_manager::StringKVInnerNodeLayout::iter_t<true>&, crimson::os::seastore::omap_manager::StringKVInnerNodeLayout::iter_t&, std::tuple<bool, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, ceph::buffer::v15_2_0::list, std::less<void>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, ceph::buffer::v15_2_0> > > >&) const::{lambda()#1}::operator()() const::{lambda(auto:1&&)#1}, boost::intrusive_ptr<crimson::os::seastore::omap_manager::OMapNode>, crimson::interruptible::interruptible_future_detail<crimson::os::seastore::TransactionConflictCondition, crimson::errorator<crimson::unthrowable_wrapper<std::error_code const&, crimson::ec<5> > >::_future<crimson::errorated_future_marker<seastar::bool_class<crimson::errorator<crimson::unthrowable_wrapper<std::error_code const&, crimson::ec<5> > >::stop_iteration_tag> > > >, 0>(crimson::errorator<crimson::unthrowable_wrapper<std::error_code const&, crimson::ec<5> > >::lw_shared_ptr<crimson::os::seastore::TransactionConflictCondition>, crimson::os::seastore::omap_manager::StringKVInnerNodeLayout::iter_t&&, std::tuple<bool, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, ceph::buffer::v15_2_0::list, std::less<void>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, ceph::buffer::v15_2_0> > > >&&) at /home/xuxuehan/src/ceph/build/../src/seastar/include/seastar/core/shared_ptr.hh:300
 9# auto seastar::futurize_invoke<crimson::interruptible::interruptible_future_detail<crimson::os::seastore::TransactionConflictCondition, crimson::errorator<crimson::unthrowable_wrapper<std::error_code const&, crimson::ec<5> > >::_future<crimson::errorated_future_marker<boost::intrusive_ptr<crimson::os::seastore::omap_manager::OMapNode> > > >::safe_then_interruptible<true, crimson::os::seastore::omap_manager::OMapInnerNode::list(crimson::os::seastore::omap_manager::omap_context_t, std::optional<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > const&, crimson::os::seastore::OMapManager::omap_list_config_t)::{lambda(auto:1&, auto:2&, auto:3&)#1}::operator()<crimson::os::seastore::omap_manager::StringKVInnerNodeLayout::iter_t<true>, crimson::os::seastore::omap_manager::StringKVInnerNodeLayout::iter_t, std::tuple<bool, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, ceph::buffer::v15_2_0::list, std::less<void>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, ceph::buffer::v15_2_0> > > > >(crimson::os::seastore::omap_manager::StringKVInnerNodeLayout::iter_t<true>&, crimson::os::seastore::omap_manager::StringKVInnerNodeLayout::iter_t&, std::tuple<bool, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, ceph::buffer::v15_2_0::list, std::less<void>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, ceph::buffer::v15_2_0> > > >&) const::{lambda()#1}::operator()() const::{lambda(auto:1&&)#1}, boost::intrusive_ptr<crimson::os::seastore::omap_manager::OMapNode>, 0>(crimson::os::seastore::omap_manager::StringKVInnerNodeLayout::iter_t&&)::{lambda(boost::intrusive_ptr<crimson::os::seastore::omap_manager::OMapNode>&&)#1}, boost::intrusive_ptr<crimson::os::seastore::omap_manager::OMapNode> >({lambda()#1}, boost::intrusive_ptr<crimson::os::seastore::omap_manager::OMapNode>&&) at /home/xuxuehan/src/ceph/build/../src/seastar/include/seastar/core/shared_ptr.hh:300


Related issues 1 (0 open1 closed)

Related to crimson - Bug #54510: Assertion fails on OMapInnerNode::listResolved

Actions
Actions #1

Updated by Xuehan Xu almost 2 years ago

  • Description updated (diff)
Actions #2

Updated by chunmei liu almost 2 years ago

How to reproduce it?

Actions #3

Updated by Xuehan Xu almost 2 years ago

  • Pull request ID set to 46886
Actions #4

Updated by Yingxin Cheng almost 2 years ago

  • Status changed from New to Resolved
Actions #5

Updated by Yingxin Cheng almost 2 years ago

  • Related to Bug #54510: Assertion fails on OMapInnerNode::list added
Actions

Also available in: Atom PDF