Project

General

Profile

Actions

Bug #38230

closed

segv in onode lookup

Added by Sage Weil over 5 years ago. Updated about 5 years ago.

Status:
Resolved
Priority:
High
Assignee:
-
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

     0> 2019-02-07 20:11:11.850 7fb6fe051700 -1 *** Caught signal (Segmentation fault) **
 in thread 7fb6fe051700 thread_name:tp_osd_tp

 ceph version 14.0.1-3498-g8dd67ee (8dd67ee3d18cb1f015257a0d5bd3ab24b6c4aebb) nautilus (dev)
 1: (()+0xf6d0) [0x7fb72042b6d0]
 2: (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_find_before_node(unsigned long, ghobject_t const&, unsigned long) const+0x4c) [0x55a7603b17ac]
 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> >::find(ghobject_t const&)+0xd5) [0x55a7603b1985]
 4: (BlueStore::OnodeSpace::lookup(ghobject_t const&)+0x72) [0x55a76031f4e2]
 5: (BlueStore::Collection::get_onode(ghobject_t const&, bool)+0x100) [0x55a760330a90]
 6: (BlueStore::_txc_add_transaction(BlueStore::TransContext*, ObjectStore::Transaction*)+0x1ae8) [0x55a760389538]
 7: (BlueStore::queue_transactions(boost::intrusive_ptr<ObjectStore::CollectionImpl>&, std::vector<ObjectStore::Transaction, std::allocator<ObjectStore::Transaction> >&, boost::intrusive_ptr<TrackedOp>, ThreadPool::TPHandle*)+0x528) [0x55a76038b1f8]
 8: (non-virtual thunk to PrimaryLogPG::queue_transactions(std::vector<ObjectStore::Transaction, std::allocator<ObjectStore::Transaction> >&, boost::intrusive_ptr<OpRequest>)+0x54) [0x55a7600edc14]
 9: (ReplicatedBackend::do_repop(boost::intrusive_ptr<OpRequest>)+0xaa9) [0x55a7601e6859]
 10: (ReplicatedBackend::_handle_message(boost::intrusive_ptr<OpRequest>)+0x187) [0x55a7601f4d37]
 11: (PGBackend::handle_message(boost::intrusive_ptr<OpRequest>)+0x87) [0x55a7600ff547]
 12: (PrimaryLogPG::do_request(boost::intrusive_ptr<OpRequest>&, ThreadPool::TPHandle&)+0x695) [0x55a7600abd65]
 13: (OSD::dequeue_op(boost::intrusive_ptr<PG>, boost::intrusive_ptr<OpRequest>, ThreadPool::TPHandle&)+0x1a9) [0x55a75feece89]
 14: (PGOpItem::run(OSD*, OSDShard*, boost::intrusive_ptr<PG>&, ThreadPool::TPHandle&)+0x62) [0x55a760181d72]
 15: (OSD::ShardedOpWQ::_process(unsigned int, ceph::heartbeat_handle_d*)+0xa0c) [0x55a75ff09cfc]
 16: (ShardedThreadPool::shardedthreadpool_worker(unsigned int)+0x433) [0x55a7604fb213]
 17: (ShardedThreadPool::WorkThreadSharded::entry()+0x10) [0x55a7604fe2b0]
 18: (()+0x7e25) [0x7fb720423e25]
 19: (clone()+0x6d) [0x7fb71f2ecbad]

/a/sage-2019-02-07_18:03:07-rados-wip-sage-testing-2019-02-07-0953-distro-basic-smithi/3560979

Related issues 2 (0 open2 closed)

Related to RADOS - Bug #38024: segv, heap corruption in ec encode_and_writeResolvedRadoslaw Zarzynski01/23/2019

Actions
Related to bluestore - Bug #37914: bluestore: segmentation faultCan't reproduce

Actions
Actions #1

Updated by Sage Weil over 5 years ago

  • Related to Bug #38024: segv, heap corruption in ec encode_and_write added
Actions #2

Updated by Sage Weil over 5 years ago

i'm guessing this is the same heap corruption we've been seeing, but logging it anyway

Actions #3

Updated by Sage Weil about 5 years ago

(gdb) bt
#0  0x00007f60dfb8c74d in tc_newarray () from /usr/lib/x86_64-linux-gnu/libtcmalloc.so.4
#1  0x000055c9fd5fe2f2 in std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_construct<char*> (this=this@entry=0x7f60b4d1e280, __beg=0x55ca244a9b00 "ceph version 14.0.1-3425-gff23e1e (ff23e1ed2868ffdfbd9f201f6ecbb8426b3aa0d7) nautilus (dev)������\223", __end=<optimized out>)
    at /usr/include/c++/7/bits/basic_string.tcc:219
#2  0x000055c9fd5fe762 in std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_construct_aux<char*> (__end=<optimized out>, __beg=<optimized out>, this=0x7f60b4d1e280) at /usr/include/c++/7/bits/basic_string.h:236
#3  std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_construct<char*> (__end=<optimized out>, __beg=<optimized out>, this=0x7f60b4d1e280) at /usr/include/c++/7/bits/basic_string.h:255
#4  std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string<char*, void> (__a=..., __end=<optimized out>, __beg=<optimized out>, this=0x7f60b4d1e280) at /usr/include/c++/7/bits/basic_string.h:607
#5  std::__cxx11::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >::str (this=<optimized out>, this=<optimized out>) at /usr/include/c++/7/sstream:173
#6  std::__cxx11::basic_ostringstream<char, std::char_traits<char>, std::allocator<char> >::str (this=0x7f60b4d1e2a0) at /usr/include/c++/7/sstream:638
#7  pretty_version_to_str[abi:cxx11]() () at ./src/common/version.cc:48
#8  0x000055c9fd4784aa in ceph::BackTrace::print (this=this@entry=0x7f60b4d1ec00, out=...) at ./src/common/BackTrace.cc:19
#9  0x000055c9fd45e286 in handle_fatal_signal (signum=11) at ./src/global/signal_handler.cc:169
#10 <signal handler called>
#11 0x00007f60dfb8c74d in tc_newarray () from /usr/lib/x86_64-linux-gnu/libtcmalloc.so.4
#12 0x000055c9fd2b9d0b in __gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, mempool::pool_allocator<(mempool::pool_index_t)4, char> > const, ceph::buffer::ptr> > >::allocate (this=<optimized out>, __n=1) at /usr/include/c++/7/ext/new_allocator.h:111
#13 std::allocator_traits<std::allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, mempool::pool_allocator<(mempool::pool_index_t)4, char> > const, ceph::buffer::ptr> > > >::allocate (__a=..., __n=1) at /usr/include/c++/7/bits/alloc_traits.h:436
#14 std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, mempool::pool_allocator<(mempool::pool_index_t)4, char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, mempool::pool_allocator<(mempool::pool_index_t)4, char> > const, ceph::buffer::ptr>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, mempool::pool_allocator<(mempool::pool_index_t)4, char> > const, ceph::buffer::ptr> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, mempool::pool_allocator<(mempool::pool_index_t)4, char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, mempool::pool_allocator<(mempool::pool_index_t)4, char> > const, ceph::buffer::ptr> > >::_M_get_node (this=0x55ca0ee91f30, this@entry=0x55ca0ee92020) at /usr/include/c++/7/bits/stl_tree.h:588
#15 std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, mempool::pool_allocator<(mempool::pool_index_t)4, char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, mempool::pool_allocator<(mempool::pool_index_t)4, char> > const, ceph::buffer::ptr>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, mempool::pool_allocator<(mempool::pool_index_t)4, char> > const, ceph::buffer::ptr> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, mempool::pool_allocator<(mempool::pool_index_t)4, char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, mempool::pool_allocator<(mempool::pool_index_t)4, char> > const, ceph::buffer::ptr> > >::_M_create_node<std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, mempool::pool_allocator<(mempool::pool_index_t)4, char> >&&>, std::tuple<> >(std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, mempool::pool_allocator<(mempool::pool_index_t)4, char> >&&>&&, std::tuple<>&&) (this=0x55ca0ee91f30, this@entry=0x55ca0ee92020) at /usr/include/c++/7/bits/stl_tree.h:642
#16 std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, mempool::pool_allocator<(mempool::pool_index_t)4, char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, mempool::pool_allocator<(mempool::pool_index_t)4, char> > const, ceph::buffer::ptr>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, mempool::pool_allocator<(mempool::pool_index_t)4, char> > const, ceph::buffer::ptr> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, mempool::pool_allocator<(mempool::pool_index_t)4, char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, mempool::pool_allocator<(mempool::pool_index_t)4, char> > const, ceph::buffer::ptr> > >::_M_emplace_hint_unique<std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, mempool::pool_allocator<(mempool::pool_index_t)4, char> >&&>, std::tuple<> >(std::_Rb_tree_const_iterator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, mempool::pool_allocator<(mempool::pool_index_t)4, char> > const, ceph::buffer::ptr> >, std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, mempool::pool_allocator<(mempool::pool_index_t)4, char> >&&>&&, std::tuple<>&&) (this=this@entry=0x55ca0ee91f30, __pos=__pos@entry={first = "", second = {_raw = 0x303a312c30303001, _off = 250158656, _len = 21962}}) at /usr/include/c++/7/bits/stl_tree.h:2398
#17 0x000055c9fd30be9b in std::map<std::__cxx11::basic_string<char, std::char_traits<char>, mempool::pool_allocator<(mempool::pool_index_t)4, char> >, ceph::buffer::ptr, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, mempool::pool_allocator<(mempool::pool_index_t)4, char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, mempool::pool_allocator<(mempool::pool_index_t)4, char> > const, ceph::buffer::ptr> > >::operator[] (__k=..., this=0x55ca0ee91f30) at /usr/include/c++/7/bits/stl_map.h:512
#18 BlueStore::_setattrs (this=this@entry=0x55ca096e9000, txc=txc@entry=0x55ca0d8c8400, c=..., o=..., aset=std::map with 2 elements = {...}) at ./src/os/bluestore/BlueStore.cc:12677
#19 0x000055c9fd32b736 in BlueStore::_txc_add_transaction (this=this@entry=0x55ca096e9000, txc=txc@entry=0x55ca0d8c8400, t=t@entry=0x55ca18fa26e0) at ./src/os/bluestore/BlueStore.cc:11023
#20 0x000055c9fd3306b7 in BlueStore::queue_transactions (this=0x55ca096e9000, ch=..., tls=std::vector of length 1, capacity 1 = {...}, op=..., handle=0x0) at ./src/os/bluestore/BlueStore.cc:10753
#21 0x000055c9fd07fc44 in non-virtual thunk to PrimaryLogPG::queue_transactions(std::vector<ObjectStore::Transaction, std::allocator<ObjectStore::Transaction> >&, boost::intrusive_ptr<OpRequest>) ()
#22 0x000055c9fd17bc70 in ReplicatedBackend::submit_transaction (this=0x55ca0bdde780, soid=..., delta_stats=..., at_version=..., _t=..., trim_to=..., roll_forward_to=..., _log_entries=std::vector of length 1, capacity 1 = {...}, hset_history=..., on_all_commit=0x55ca0fa200e0, tid=64783, reqid=..., orig_op=...)
    at ./src/osd/ReplicatedBackend.cc:502
#23 0x000055c9fcfd86d6 in PrimaryLogPG::issue_repop (this=this@entry=0x55ca0be0c000, repop=repop@entry=0x55ca0c8fe580, ctx=ctx@entry=0x55ca11123600) at ./src/osd/PrimaryLogPG.cc:10578
#24 0x000055c9fd03c76a in PrimaryLogPG::execute_ctx (this=this@entry=0x55ca0be0c000, ctx=ctx@entry=0x55ca11123600) at ./src/osd/PrimaryLogPG.cc:4111
#25 0x000055c9fd04076e in PrimaryLogPG::do_op (this=this@entry=0x55ca0be0c000, op=...) at ./src/osd/PrimaryLogPG.cc:2431
#26 0x000055c9fd042758 in PrimaryLogPG::do_request (this=0x55ca0be0c000, op=..., handle=...) at ./src/osd/PrimaryLogPG.cc:1868
#27 0x000055c9fce6dd93 in OSD::dequeue_op (this=this@entry=0x55ca097b4000, pg=..., op=..., handle=...) at ./src/osd/OSD.cc:9687
#28 0x000055c9fd117962 in PGOpItem::run (this=<optimized out>, osd=0x55ca097b4000, sdata=<optimized out>, pg=..., handle=...) at ./src/osd/OpQueueItem.cc:24
#29 0x000055c9fce8baf5 in OpQueueItem::run (handle=..., pg=..., sdata=<optimized out>, osd=<optimized out>, this=0x7f60b4d264e0) at ./src/osd/OpQueueItem.h:134
#30 OSD::ShardedOpWQ::_process (this=0x55ca097b51f8, thread_index=<optimized out>, hb=<optimized out>) at ./src/osd/OSD.cc:10862
#31 0x000055c9fd4b613c in ShardedThreadPool::shardedthreadpool_worker (this=0x55ca097b4ad0, thread_index=14) at ./src/common/WorkQueue.cc:311
#32 0x000055c9fd4b9210 in ShardedThreadPool::WorkThreadSharded::entry (this=<optimized out>) at ./src/common/WorkQueue.h:699
#33 0x00007f60ddc786db in start_thread (arg=0x7f60b4d29700) at pthread_create.c:463
#34 0x00007f60dca1388f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
(gdb) f 23
#23 0x000055c9fcfd86d6 in PrimaryLogPG::issue_repop (this=this@entry=0x55ca0be0c000, repop=repop@entry=0x55ca0c8fe580, ctx=ctx@entry=0x55ca11123600) at ./src/osd/PrimaryLogPG.cc:10578
10578   ./src/osd/PrimaryLogPG.cc: No such file or directory.
(gdb) p pgid
p ingoNo symbol "pgid" in current context.
(gdb) p info.pgid
$1 = {pgid = {m_pool = 4, m_seed = 6, static calc_name_buf_size = 36 '$'}, shard = {id = -1 '�', static NO_SHARD = {id = -1 '�', static NO_SHARD = <same as static member of an already seen type>}}, static calc_name_buf_size = 40 '('}

/a/sage-2019-02-07_22:38:18-rados-master-distro-basic-smithi/3561541
Actions #4

Updated by Sage Weil about 5 years ago

  • Related to Bug #37914: bluestore: segmentation fault added
Actions #5

Updated by Sage Weil about 5 years ago

  • Status changed from 12 to Resolved
Actions

Also available in: Atom PDF