Project

General

Profile

Actions

Bug #8691

closed

osd: PG::_lock, OSD::pg_map_lock lock cycle

Added by Sage Weil almost 10 years ago. Updated over 9 years ago.

Status:
Resolved
Priority:
Urgent
Assignee:
Category:
OSD
Target version:
-
% Done:

0%

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

Description

ubuntu@teuthology:/var/lib/teuthworker/archive/sage-2014-06-27_10:04:18-smoke-master-testing-basic-plana/329562

------------------------------------
existing dependency OSD::pg_map_lock (71) -> PG::_lock (116) at:
 ceph version 0.81-629-g94e1b77 (94e1b7762477d8216becb650345343da4efb6250)
 1: (PG::lock(bool)+0x29) [0x749ef9]
 2: (OSD::_lookup_lock_pg(spg_t)+0xa9) [0x633e99]
 3: (OSD::handle_pg_peering_evt(spg_t, pg_info_t const&, std::map<unsigned int, pg_interval_t, std::less<unsigned int>, std::allocator<std::pair<unsigned int const, pg_interval_t> > >&, unsigned int, pg_shard_t, bool, std::tr1::shared_ptr<PG::CephPeeringEvt>)+0x3ae) [0x66fa3e
]
 4: (OSD::handle_pg_notify(std::tr1::shared_ptr<OpRequest>)+0x607) [0x6728d7]
 5: (OSD::dispatch_op(std::tr1::shared_ptr<OpRequest>)+0xd0) [0x672c70]
 6: (OSD::_dispatch(Message*)+0x2cb) [0x67a57b]
 7: (OSD::ms_dispatch(Message*)+0x1f8) [0x67ada8]
 8: (DispatchQueue::entry()+0x4e9) [0xb2def9]
 9: (DispatchQueue::DispatchThread::entry()+0xd) [0xa6548d]
 10: (()+0x7e9a) [0x7f11b979be9a]
 11: (clone()+0x6d) [0x7f11b7d5c3fd]

    -7> 2014-06-27 19:19:03.459071 7f11ab702700  0 existing intermediate dependency Session::session_dispatch_lock (109) -> OSD::pg_map_lock (71) at:
 ceph version 0.81-629-g94e1b77 (94e1b7762477d8216becb650345343da4efb6250)
 1: (OSD::handle_op(std::tr1::shared_ptr<OpRequest>, std::tr1::shared_ptr<OSDMap const>)+0x155f) [0x65f14f]
 2: (OSD::dispatch_op_fast(std::tr1::shared_ptr<OpRequest>, std::tr1::shared_ptr<OSDMap const>)+0x6f3) [0x65fb53]
 3: (OSD::dispatch_session_waiting(OSD::Session*, std::tr1::shared_ptr<OSDMap const>)+0xab) [0x65fe2b]
 4: (OSD::ms_fast_dispatch(Message*)+0x23f) [0x66045f]
 5: (DispatchQueue::fast_dispatch(Message*)+0x59) [0xb2d459]
 6: (Pipe::reader()+0x2541) [0xb57251]
 7: (Pipe::Reader::entry()+0xd) [0xb58f7d]
 8: (()+0x7e9a) [0x7f11b979be9a]
 9: (clone()+0x6d) [0x7f11b7d5c3fd]

    -6> 2014-06-27 19:19:03.459117 7f11ab702700  0 new dependency PG::_lock (116) -> Session::session_dispatch_lock (109) creates a cycle at
 ceph version 0.81-629-g94e1b77 (94e1b7762477d8216becb650345343da4efb6250)
 1: (OSD::wake_pg_waiters(PG*, spg_t)+0xc6) [0x6b48a6]
 2: (OSD::_open_lock_pg(std::tr1::shared_ptr<OSDMap const>, spg_t, bool, bool)+0x1af) [0x66012f]
 3: (OSD::_create_lock_pg(std::tr1::shared_ptr<OSDMap const>, spg_t, bool, bool, bool, int, std::vector<int, std::allocator<int> >&, int, std::vector<int, std::allocator<int> >&, int, pg_history_t, std::map<unsigned int, pg_interval_t, std::less<unsigned int>, std::allocator<
std::pair<unsigned int const, pg_interval_t> > >&, ObjectStore::Transaction&)+0x178) [0x66d4d8]
 4: (OSD::handle_pg_create(std::tr1::shared_ptr<OpRequest>)+0x1995) [0x66f195]
 5: (OSD::dispatch_op(std::tr1::shared_ptr<OpRequest>)+0x1ed) [0x672d8d]
 6: (OSD::do_waiters()+0x1ad) [0x67302d]
 7: (OSD::ms_dispatch(Message*)+0x200) [0x67adb0]
 8: (DispatchQueue::entry()+0x4e9) [0xb2def9]
 9: (DispatchQueue::DispatchThread::entry()+0xd) [0xa6548d]
 10: (()+0x7e9a) [0x7f11b979be9a]
 11: (clone()+0x6d) [0x7f11b7d5c3fd]

    -5> 2014-06-27 19:19:03.459176 7f11ab702700  0 btw, i am holding these locks:
    -4> 2014-06-27 19:19:03.459179 7f11ab702700  0   OSD::osd_lock (55)
    -3> 2014-06-27 19:19:03.459183 7f11ab702700  0   PG::_lock (116)
    -2> 2014-06-27 19:19:03.459186 7f11ab702700  0 

    -1> 2014-06-27 19:19:03.459376 7f11b103b700 20 journal do_write latency 0.023244
     0> 2014-06-27 19:19:03.463528 7f11ab702700 -1 common/lockdep.cc: In function 'int lockdep_will_lock(const char*, int)' thread 7f11ab702700 time 2014-06-27 19:19:03.459189
common/lockdep.cc: 225: FAILED assert(0)

 ceph version 0.81-629-g94e1b77 (94e1b7762477d8216becb650345343da4efb6250)
 1: (lockdep_will_lock(char const*, int)+0xc50) [0xb02830]
 2: (Mutex::Lock(bool)+0x104) [0xa3b8a4]
 3: (OSD::wake_pg_waiters(PG*, spg_t)+0xc6) [0x6b48a6]
 4: (OSD::_open_lock_pg(std::tr1::shared_ptr<OSDMap const>, spg_t, bool, bool)+0x1af) [0x66012f]
 5: (OSD::_create_lock_pg(std::tr1::shared_ptr<OSDMap const>, spg_t, bool, bool, bool, int, std::vector<int, std::allocator<int> >&, int, std::vector<int, std::allocator<int> >&, int, pg_history_t, std::map<unsigned int, pg_interval_t, std::less<unsigned int>, std::allocator<
std::pair<unsigned int const, pg_interval_t> > >&, ObjectStore::Transaction&)+0x178) [0x66d4d8]
 6: (OSD::handle_pg_create(std::tr1::shared_ptr<OpRequest>)+0x1995) [0x66f195]
 7: (OSD::dispatch_op(std::tr1::shared_ptr<OpRequest>)+0x1ed) [0x672d8d]
 8: (OSD::do_waiters()+0x1ad) [0x67302d]
 9: (OSD::ms_dispatch(Message*)+0x200) [0x67adb0]
 10: (DispatchQueue::entry()+0x4e9) [0xb2def9]
 11: (DispatchQueue::DispatchThread::entry()+0xd) [0xa6548d]
 12: (()+0x7e9a) [0x7f11b979be9a]
 13: (clone()+0x6d) [0x7f11b7d5c3fd]
 NOTE: a copy of the executable, or `objdump -rdS <executable>` is needed to interpret this.

Actions #1

Updated by Samuel Just almost 10 years ago

  • Status changed from New to 12
  • Assignee set to Samuel Just
Actions #2

Updated by Samuel Just almost 10 years ago

  • Status changed from 12 to 7
Actions #3

Updated by Sage Weil almost 10 years ago

  • Status changed from 7 to 12
Actions #4

Updated by Samuel Just over 9 years ago

  • Status changed from 12 to Resolved
Actions

Also available in: Atom PDF