Bug #751
closed_dout_lock is used after been disctucted.
0%
Description
cconf c /etc/ceph/ceph.conf -l mon
------------gdb------------------------
common/Mutex.h: In function 'void Mutex::Lock(bool)':
common/Mutex.h:118: FAILED assert(r 0)
ceph version 0.24.2 (f7572de5cb87eb7157217be4975ae66d90831bb7)
1: (ceph::__ceph_assert_fail(char const*, char const*, int, char const*)+0x3c) [0x45d30b]
2: (Mutex::Lock(bool)+0x97) [0x45a673]
3: /root/downloadsda3/ceph-0.24.2/src/cconf() [0x464c2a]
4: (operator<<(std::ostream&, dbeginl_t)+0x16) [0x466bcf]
5: (SafeTimer::shutdown()+0x2e) [0x48d6ec]
6: /root/downloadsda3/ceph-0.24.2/src/cconf() [0x48a2cb]
7: (FlusherStopper::~FlusherStopper()+0x16) [0x48b7dc]
8: (exit()+0xe1) [0x3716a379c1]
9: (_libc_start_main()+0x104) [0x3716a1ee84]
10: /root/downloadsda3/ceph-0.24.2/src/cconf() [0x459599]
NOTE: a copy of the executable, or `objdump -rdS <executable>` is needed to interpret this.
common/Mutex.h: In function 'void Mutex::Lock(bool)':
common/Mutex.h:118: FAILED assert(r 0)
ceph version 0.24.2 (f7572de5cb87eb7157217be4975ae66d90831bb7)
1: (ceph::__ceph_assert_fail(char const*, char const*, int, char const*)+0x3c) [0x45d30b]
2: (Mutex::Lock(bool)+0x97) [0x45a673]
3: /root/downloadsda3/ceph-0.24.2/src/cconf() [0x464c2a]
4: (operator<<(std::ostream&, dbeginl_t)+0x16) [0x466bcf]
5: (SafeTimer::shutdown()+0x2e) [0x48d6ec]
6: /root/downloadsda3/ceph-0.24.2/src/cconf() [0x48a2cb]
7: (FlusherStopper::~FlusherStopper()+0x16) [0x48b7dc]
8: (exit()+0xe1) [0x3716a379c1]
9: (_libc_start_main()+0x104) [0x3716a1ee84]
10: /root/downloadsda3/ceph-0.24.2/src/cconf() [0x459599]
NOTE: a copy of the executable, or `objdump -rdS <executable>` is needed to interpret this.
terminate called after throwing an instance of 'ceph::FailedAssertion'
Program received signal SIGABRT, Aborted.
0x0000003716a34065 in raise () from /lib64/libc.so.6
--------------------------------work around-------------------
void SafeTimer::shutdown()
{
//dout(10) << "shutdown" << dendl; //comment out
if (thread) {
assert(lock.is_locked());
cancel_all_events();
stopping = true;
cond.Signal();
lock.Unlock();
thread->join();
lock.Lock();
delete thread;
thread = NULL;
}
}
Files