Actions
Bug #2183
closedosd: lockdep cycle with obc lock and watch_lock
% Done:
0%
Source:
Development
Tags:
Backport:
Regression:
Severity:
Reviewed:
Affected Versions:
ceph-qa-suite:
Pull request ID:
Crash signature (v1):
Crash signature (v2):
Description
------------------------------------ existing dependency ReplicatedPG::ObjectContext::lock (53) -> OSD::watch_lock (41) at: ceph version 0.43-252-gee55a58 (commit:ee55a581d24663c00af19f3dceb747d95293d9a1) 2012-03-16 12:26:34.403355 1: (Mutex::Lock(bool)+0x41) [0xb04c97] 2012-03-16 12:26:34.403365 2: (OSD::disconnect_session_watches(OSD::Session*)+0x2cc) [0xb859ba] 2012-03-16 12:26:34.403372 3: (OSD::ms_handle_reset(Connection*)+0x11a) [0xb86052] 2012-03-16 12:26:34.403379 4: (Messenger::ms_deliver_handle_reset(Connection*)+0x4b) [0xcc4e11] 2012-03-16 12:26:34.403386 5: (SimpleMessenger::dispatch_entry()+0x45b) [0xcae68f] 2012-03-16 12:26:34.403392 6: (SimpleMessenger::DispatchThread::entry()+0x1c) [0xaaff62] 2012-03-16 12:26:34.403398 7: (Thread::_entry_func(void*)+0x23) [0xccd471] 2012-03-16 12:26:34.403411 8: (()+0x6b50) [0x7f89d88c5b50] 2012-03-16 12:26:34.403418 9: (clone()+0x6d) [0x7f89d6ef990d] 2012-03-16 12:26:34.403422 2012-03-16 12:26:34.403430 7f89d2bff700 new dependency OSD::watch_lock (41) -> ReplicatedPG::ObjectContext::lock (53) creates a cycle at ceph version 0.43-252-gee55a58 (commit:ee55a581d24663c00af19f3dceb747d95293d9a1) 2012-03-16 12:26:34.403437 1: (Mutex::Lock(bool)+0x41) [0xb04c97] 2012-03-16 12:26:34.403443 2: (ReplicatedPG::ObjectContext::ondisk_write_lock()+0x23) [0xb0d603] 2012-03-16 12:26:34.403450 3: (ReplicatedPG::apply_repop(ReplicatedPG::RepGather*)+0x1f4) [0xadda8c] 2012-03-16 12:26:34.403456 4: (ReplicatedPG::eval_repop(ReplicatedPG::RepGather*)+0x3ed) [0xadef37] 2012-03-16 12:26:34.403471 5: (ReplicatedPG::handle_watch_timeout(void*, entity_name_t, utime_t)+0x669) [0xae1d65] 2012-03-16 12:26:34.403479 6: (OSD::handle_watch_timeout(void*, ReplicatedPG*, entity_name_t, utime_t)+0x8a) [0xb856d4] 2012-03-16 12:26:34.403486 7: (Watch::C_WatchTimeout::finish(int)+0x45) [0xbf702f] 2012-03-16 12:26:34.403492 8: (SafeTimer::timer_thread()+0x291) [0xcce0a3] 2012-03-16 12:26:34.403499 9: (SafeTimerThread::entry()+0x1c) [0xccf0c4] 2012-03-16 12:26:34.403505 10: (Thread::_entry_func(void*)+0x23) [0xccd471] 2012-03-16 12:26:34.403511 11: (()+0x6b50) [0x7f89d88c5b50] 2012-03-16 12:26:34.403517 12: (clone()+0x6d) [0x7f89d6ef990d] 2012-03-16 12:26:34.403521 2012-03-16 12:26:34.403526 7f89d2bff700 btw, i am holding these locks: 2012-03-16 12:26:34.403532 7f89d2bff700 OSD::watch_lock (41) 2012-03-16 12:26:34.403538 7f89d2bff700 PG::_lock (46) 2012-03-16 12:26:34.403542 7f89d2bff700 common/lockdep.cc: In function 'int lockdep_will_lock(const char*, int)' thread 7f89d2bff700 time 2012-03-16 12:26:34.403553 common/lockdep.cc: 201: FAILED assert(0) ceph version 0.43-252-gee55a58 (commit:ee55a581d24663c00af19f3dceb747d95293d9a1) 1: (ceph::__ceph_assert_fail(char const*, char const*, int, char const*)+0xae) [0xcd8586] 2: (lockdep_will_lock(char const*, int)+0x8f8) [0xd5195f] 3: (Mutex::_will_lock()+0x24) [0xb04bca] 4: (Mutex::Lock(bool)+0x41) [0xb04c97] 5: (ReplicatedPG::ObjectContext::ondisk_write_lock()+0x23) [0xb0d603] 6: (ReplicatedPG::apply_repop(ReplicatedPG::RepGather*)+0x1f4) [0xadda8c] 7: (ReplicatedPG::eval_repop(ReplicatedPG::RepGather*)+0x3ed) [0xadef37] 8: (ReplicatedPG::handle_watch_timeout(void*, entity_name_t, utime_t)+0x669) [0xae1d65] 9: (OSD::handle_watch_timeout(void*, ReplicatedPG*, entity_name_t, utime_t)+0x8a) [0xb856d4] 10: (Watch::C_WatchTimeout::finish(int)+0x45) [0xbf702f] 11: (SafeTimer::timer_thread()+0x291) [0xcce0a3] 12: (SafeTimerThread::entry()+0x1c) [0xccf0c4] 13: (Thread::_entry_func(void*)+0x23) [0xccd471] 14: (()+0x6b50) [0x7f89d88c5b50] 15: (clone()+0x6d) [0x7f89d6ef990d] ceph version 0.43-252-gee55a58 (commit:ee55a581d24663c00af19f3dceb747d95293d9a1) 1: (ceph::__ceph_assert_fail(char const*, char const*, int, char const*)+0xae) [0xcd8586] 2: (lockdep_will_lock(char const*, int)+0x8f8) [0xd5195f] 3: (Mutex::_will_lock()+0x24) [0xb04bca] 4: (Mutex::Lock(bool)+0x41) [0xb04c97] 5: (ReplicatedPG::ObjectContext::ondisk_write_lock()+0x23) [0xb0d603] 6: (ReplicatedPG::apply_repop(ReplicatedPG::RepGather*)+0x1f4) [0xadda8c] 7: (ReplicatedPG::eval_repop(ReplicatedPG::RepGather*)+0x3ed) [0xadef37]
Actions