Project

General

Profile

Actions

Bug #42823

closed

crash in BlueStore::Onode destructor

Added by Jeff Layton over 4 years ago. Updated about 4 years ago.

Status:
Duplicate
Priority:
Normal
Assignee:
-
Target version:
-
% Done:

0%

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

Description

Testing xfstests on cephfs in vstart cluster, and OSD crashed:

 ceph version 15.0.0-7243-gb95f354340d0 (b95f354340d057c7a783455f08253f808f665ff9) octopus (dev)
 1: (()+0x2da4e7a) [0x5580b8315e7a]
 2: (()+0x14b20) [0x7f31fe4c8b20]
 3: (gsignal()+0x145) [0x7f31fdf64625]
 4: (abort()+0x12b) [0x7f31fdf4d8d9]
 5: (()+0x257a9) [0x7f31fdf4d7a9]
 6: (()+0x34a66) [0x7f31fdf5ca66]
 7: (void boost::intrusive::detail::destructor_impl<boost::intrusive::generic_hook<(boost::intrusive::algo_types)0, boost::intrusive::list_node_traits<void*>, boost::intrusive::member_tag, (boost::intrusive::link_mode_type)1, (boost::intrusive::base_hook_type)0> >(boost::intrusive::generic_hook<(boost::intrusive::algo_types)0, boost::intrusive::list_node_traits<void*>, boost::intrusive::member_tag, (boost::intrusive::link_mode_type)1, (boost::intrusive::base_hook_type)0>&, boost::intrusive::detail::link_dispatch<(boost::intrusive::link_mode_type)1>)+0x3e) [0x5580b79e9d16]
 8: (boost::intrusive::generic_hook<(boost::intrusive::algo_types)0, boost::intrusive::list_node_traits<void*>, boost::intrusive::member_tag, (boost::intrusive::link_mode_type)1, (boost::intrusive::base_hook_type)0>::~generic_hook()+0x18) [0x5580b79c523e]
 9: (boost::intrusive::list_member_hook<void, void, void>::~list_member_hook()+0x18) [0x5580b79a1d3a]
 10: (BlueStore::Onode::~Onode()+0x66) [0x5580b81aba02]
 11: (BlueStore::Onode::put()+0x34) [0x5580b81aba5c]
 12: (()+0x2c3f2dc) [0x5580b81b02dc]
 13: (boost::intrusive_ptr<BlueStore::Onode>::~intrusive_ptr()+0x27) [0x5580b81be0c7]
 14: (std::pair<ghobject_t const, boost::intrusive_ptr<BlueStore::Onode> >::~pair()+0x1e) [0x5580b821e96c]
 15: (void mempool::pool_allocator<(mempool::pool_index_t)4, std::__detail::_Hash_node<std::pair<ghobject_t const, boost::intrusive_ptr<BlueStore::Onode> >, true> >::destroy<std::pair<ghobject_t const, boost::intrusive_ptr<BlueStore::Onode> > >(std::pair<ghobject_t const, boost::intrusive_ptr<BlueStore::Onode> >*)+0x1c) [0x5580b821e998]
 16: (decltype (({parm#1}.destroy)({parm#2})) std::allocator_traits<mempool::pool_allocator<(mempool::pool_index_t)4, std::__detail::_Hash_node<std::pair<ghobject_t const, boost::intrusive_ptr<BlueStore::Onode> >, true> > >::_S_destroy<mempool::pool_allocator<(mempool::pool_index_t)4, std::__detail::_Hash_node<std::pair<ghobject_t const, boost::intrusive_ptr<BlueStore::Onode> >, true> >, std::pair<ghobject_t const, boost::intrusive_ptr<BlueStore::Onode> > >(mempool::pool_allocator<(mempool::pool_index_t)4, std::__detail::_Hash_node<std::pair<ghobject_t const, boost::intrusive_ptr<BlueStore::Onode> >, true> >&, std::pair<ghobject_t const, boost::intrusive_ptr<BlueStore::Onode> >*, int)+0x26) [0x5580b8217e68]
 17: (void std::allocator_traits<mempool::pool_allocator<(mempool::pool_index_t)4, std::__detail::_Hash_node<std::pair<ghobject_t const, boost::intrusive_ptr<BlueStore::Onode> >, true> > >::destroy<std::pair<ghobject_t const, boost::intrusive_ptr<BlueStore::Onode> > >(mempool::pool_allocator<(mempool::pool_index_t)4, std::__detail::_Hash_node<std::pair<ghobject_t const, boost::intrusive_ptr<BlueStore::Onode> >, true> >&, std::pair<ghobject_t const, boost::intrusive_ptr<BlueStore::Onode> >*)+0x28) [0x5580b820eda6]
 18: (std::__detail::_Hashtable_alloc<mempool::pool_allocator<(mempool::pool_index_t)4, std::__detail::_Hash_node<std::pair<ghobject_t const, boost::intrusive_ptr<BlueStore::Onode> >, true> > >::_M_deallocate_node(std::__detail::_Hash_node<std::pair<ghobject_t const, boost::intrusive_ptr<BlueStore::Onode> >, true>*)+0x37) [0x5580b81fedf3]
 19: (std::_Hashtable<ghobject_t, std::pair<ghobject_t const, boost::intrusive_ptr<BlueStore::Onode> >, mempool::pool_allocator<(mempool::pool_index_t)4, std::pair<ghobject_t const, boost::intrusive_ptr<BlueStore::Onode> > >, std::__detail::_Select1st, std::equal_to<ghobject_t>, std::hash<ghobject_t>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<true, false, true> >::_M_erase(unsigned long, std::__detail::_Hash_node_base*, std::__detail::_Hash_node<std::pair<ghobject_t const, boost::intrusive_ptr<BlueStore::Onode> >, true>*)+0x12d) [0x5580b81ff0b3]
 20: (std::_Hashtable<ghobject_t, std::pair<ghobject_t const, boost::intrusive_ptr<BlueStore::Onode> >, mempool::pool_allocator<(mempool::pool_index_t)4, std::pair<ghobject_t const, boost::intrusive_ptr<BlueStore::Onode> > >, std::__detail::_Select1st, std::equal_to<ghobject_t>, std::hash<ghobject_t>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<true, false, true> >::_M_erase(std::integral_constant<bool, true>, ghobject_t const&)+0x8f) [0x5580b81e73af]
 21: (std::_Hashtable<ghobject_t, std::pair<ghobject_t const, boost::intrusive_ptr<BlueStore::Onode> >, mempool::pool_allocator<(mempool::pool_index_t)4, std::pair<ghobject_t const, boost::intrusive_ptr<BlueStore::Onode> > >, std::__detail::_Select1st, std::equal_to<ghobject_t>, std::hash<ghobject_t>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<true, false, true> >::erase(ghobject_t const&)+0x32) [0x5580b81d0764]
 22: (std::unordered_map<ghobject_t, boost::intrusive_ptr<BlueStore::Onode>, std::hash<ghobject_t>, std::equal_to<ghobject_t>, mempool::pool_allocator<(mempool::pool_index_t)4, std::pair<ghobject_t const, boost::intrusive_ptr<BlueStore::Onode> > > >::erase(ghobject_t const&)+0x23) [0x5580b81bac13]
 23: (BlueStore::OnodeSpace::remove(ghobject_t const&)+0x27) [0x5580b81ac167]
 24: (LruOnodeCacheShard::_trim_to(unsigned long)+0x5fe) [0x5580b81b1754]
 25: (BlueStore::CacheShard::_trim()+0x59) [0x5580b81abc0d]
 26: (BlueStore::OnodeSpace::add(ghobject_t const&, boost::intrusive_ptr<BlueStore::Onode>)+0x437) [0x5580b810a313]
 27: (BlueStore::Collection::get_onode(ghobject_t const&, bool, bool)+0x934) [0x5580b811c3ac]
 28: (BlueStore::_txc_add_transaction(BlueStore::TransContext*, ceph::os::Transaction*)+0xd1f) [0x5580b8179f41]
 29: (BlueStore::queue_transactions(boost::intrusive_ptr<ObjectStore::CollectionImpl>&, std::vector<ceph::os::Transaction, std::allocator<ceph::os::Transaction> >&, boost::intrusive_ptr<TrackedOp>, ThreadPool::TPHandle*)+0x2fb) [0x5580b817877d]
 30: (ObjectStore::queue_transaction(boost::intrusive_ptr<ObjectStore::CollectionImpl>&, ceph::os::Transaction&&, boost::intrusive_ptr<TrackedOp>, ThreadPool::TPHandle*)+0x93) [0x5580b79a451d]
 31: (OSD::dispatch_context(PeeringCtx&, PG*, std::shared_ptr<OSDMap const>, ThreadPool::TPHandle*)+0x806) [0x5580b797d458]
 32: (OSD::dequeue_peering_evt(OSDShard*, PG*, std::shared_ptr<PGPeeringEvent>, ThreadPool::TPHandle&)+0x37a) [0x5580b7983260]
 33: (ceph::osd::scheduler::PGPeeringItem::run(OSD*, OSDShard*, boost::intrusive_ptr<PG>&, ThreadPool::TPHandle&)+0x73) [0x5580b7df29d5]
 34: (ceph::osd::scheduler::OpSchedulerItem::run(OSD*, OSDShard*, boost::intrusive_ptr<PG>&, ThreadPool::TPHandle&)+0x4b) [0x5580b79ae813]
 35: (OSD::ShardedOpWQ::_process(unsigned int, ceph::heartbeat_handle_d*)+0x3629) [0x5580b7990d87]
 36: (ShardedThreadPool::shardedthreadpool_worker(unsigned int)+0x59c) [0x5580b83ba97e]
 37: (ShardedThreadPool::WorkThreadSharded::entry()+0x25) [0x5580b83bc35b]
 38: (Thread::entry_wrapper()+0x78) [0x5580b83a7134]
 39: (Thread::_entry_func(void*)+0x18) [0x5580b83a70b2]
 40: (()+0x94e2) [0x7f31fe4bd4e2]
 41: (clone()+0x43) [0x7f31fe029643]

Build is based on 7ffb5d9e79207da, with some MDS patches on top.


Files

osd.0.log.xz (191 KB) osd.0.log.xz osd log Jeff Layton, 11/14/2019 09:05 PM
osd.0.log.xz (207 KB) osd.0.log.xz crash log 2 Jeff Layton, 11/22/2019 04:13 PM
Actions #1

Updated by Neha Ojha over 4 years ago

  • Project changed from RADOS to bluestore
Actions #2

Updated by Jeff Layton over 4 years ago

New crash today. Looks somewhat similar to the old one. This one is based on e4b3036422df70e3 with some cephfs patches on top:

     0> 2019-11-22T11:11:54.648-0500 7fe728ba8700 -1 *** Caught signal (Segmentation fault) **
 in thread 7fe728ba8700 thread_name:tp_osd_tp

 ceph version 15.0.0-7447-g399dfa23900a (399dfa23900aa816c6f433181576e3b5b7e6e743) octopus (dev)
 1: (()+0x2ebe0c6) [0x5650151610c6]
 2: (()+0x14b20) [0x7fe749309b20]
 3: (std::_Hashtable<ghobject_t, std::pair<ghobject_t const, boost::intrusive_ptr<BlueStore::Onode> >, mempool::pool_allocator<(mempool::pool_index_t)4, std::pair<ghobject_t const, boost::intrusive_ptr<BlueStore::Onode> > >, std::__detail::_Select1st, std::equal_to<ghobject_t>, std::hash<ghobject_t>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<true, false, true> >::_M_bucket_index(ghobject_t const&, unsigned long) const+0x18) [0x5650150329d2]
 4: (std::_Hashtable<ghobject_t, std::pair<ghobject_t const, boost::intrusive_ptr<BlueStore::Onode> >, mempool::pool_allocator<(mempool::pool_index_t)4, std::pair<ghobject_t const, boost::intrusive_ptr<BlueStore::Onode> > >, std::__detail::_Select1st, std::equal_to<ghobject_t>, std::hash<ghobject_t>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<true, false, true> >::_M_erase(std::integral_constant<bool, true>, ghobject_t const&)+0x3e) [0x56501502fdf6]
 5: (std::_Hashtable<ghobject_t, std::pair<ghobject_t const, boost::intrusive_ptr<BlueStore::Onode> >, mempool::pool_allocator<(mempool::pool_index_t)4, std::pair<ghobject_t const, boost::intrusive_ptr<BlueStore::Onode> > >, std::__detail::_Select1st, std::equal_to<ghobject_t>, std::hash<ghobject_t>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<true, false, true> >::erase(ghobject_t const&)+0x32) [0x5650150191dc]
 6: (std::unordered_map<ghobject_t, boost::intrusive_ptr<BlueStore::Onode>, std::hash<ghobject_t>, std::equal_to<ghobject_t>, mempool::pool_allocator<(mempool::pool_index_t)4, std::pair<ghobject_t const, boost::intrusive_ptr<BlueStore::Onode> > > >::erase(ghobject_t const&)+0x23) [0x565015003643]
 7: (BlueStore::OnodeSpace::remove(ghobject_t const&)+0x27) [0x565014ff4c69]
 8: (LruOnodeCacheShard::_trim_to(unsigned long)+0x5fe) [0x565014ffa256]
 9: (BlueStore::CacheShard::_trim()+0x59) [0x565014ff470f]
 10: (BlueStore::OnodeSpace::add(ghobject_t const&, boost::intrusive_ptr<BlueStore::Onode>)+0x437) [0x565014f52b29]
 11: (BlueStore::Collection::get_onode(ghobject_t const&, bool, bool)+0x934) [0x565014f64bc2]
 12: (BlueStore::_txc_add_transaction(BlueStore::TransContext*, ceph::os::Transaction*)+0xd1f) [0x565014fc2757]
 13: (BlueStore::queue_transactions(boost::intrusive_ptr<ObjectStore::CollectionImpl>&, std::vector<ceph::os::Transaction, std::allocator<ceph::os::Transaction> >&, boost::intrusive_ptr<TrackedOp>, ThreadPool::TPHandle*)+0x2fb) [0x565014fc0f93]
 14: (ObjectStore::queue_transaction(boost::intrusive_ptr<ObjectStore::CollectionImpl>&, ceph::os::Transaction&&, boost::intrusive_ptr<TrackedOp>, ThreadPool::TPHandle*)+0x93) [0x56501479fde3]
 15: (OSD::dispatch_context(PeeringCtx&, PG*, std::shared_ptr<OSDMap const>, ThreadPool::TPHandle*)+0x806) [0x56501477706c]
 16: (OSD::dequeue_peering_evt(OSDShard*, PG*, std::shared_ptr<PGPeeringEvent>, ThreadPool::TPHandle&)+0x37a) [0x56501477ce74]
 17: (ceph::osd::scheduler::PGPeeringItem::run(OSD*, OSDShard*, boost::intrusive_ptr<PG>&, ThreadPool::TPHandle&)+0x73) [0x565014c188d9]
 18: (ceph::osd::scheduler::OpSchedulerItem::run(OSD*, OSDShard*, boost::intrusive_ptr<PG>&, ThreadPool::TPHandle&)+0x4b) [0x5650147a9e13]
 19: (OSD::ShardedOpWQ::_process(unsigned int, ceph::heartbeat_handle_d*)+0x3629) [0x56501478aa93]
 20: (ShardedThreadPool::shardedthreadpool_worker(unsigned int)+0x59c) [0x565015204eb6]
 21: (ShardedThreadPool::WorkThreadSharded::entry()+0x25) [0x565015206b83]
 22: (Thread::entry_wrapper()+0x78) [0x5650151f116a]
 23: (Thread::_entry_func(void*)+0x18) [0x5650151f10e8]
 24: (()+0x94e2) [0x7fe7492fe4e2]
 25: (clone()+0x43) [0x7fe748e6a693]
 NOTE: a copy of the executable, or `objdump -rdS <executable>` is needed to interpret this.
Actions #3

Updated by Sage Weil about 4 years ago

  • Status changed from New to Duplicate

Going to optimistically assume this is a dup of #43147 / #43131

Actions

Also available in: Atom PDF