Project

General

Profile

Actions

Bug #751

closed

_dout_lock is used after been disctucted.

Added by longguang yue about 13 years ago. Updated about 13 years ago.

Status:
Resolved
Priority:
Normal
Assignee:
Category:
-
Target version:
-
% Done:

0%

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

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 &lt;executable&gt;` 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

lock.txt (57.9 KB) lock.txt longguang yue, 01/27/2011 09:31 PM
Actions #1

Updated by Sage Weil about 13 years ago

  • Assignee set to Colin McCabe
Actions #2

Updated by Colin McCabe about 13 years ago

I have confirmed that _dout_lock is not the last thing to be destroyed.

Jan 28 05:57:42 flab cconf: creating mutex Clock::lock 
Jan 28 05:57:42 flab cconf: creating mutex logger_lock
Jan 28 05:57:42 flab cconf: creating mutex auth_supported_init
Jan 28 05:57:42 flab cconf: creating mutex _dout_lock
Jan 28 05:57:42 flab cconf: creating mutex stringtable::lock
Jan 28 05:57:42 flab cconf: creating mutex ConfFile::parse_lock
Jan 28 05:57:42 flab cconf: creating mutex ExportControl
Jan 28 05:57:42 flab cconf: now destroying mutex ConfFile::parse_lock
Jan 28 05:57:42 flab cconf: now destroying mutex stringtable::lock
Jan 28 05:57:42 flab cconf: now destroying mutex _dout_lock
Jan 28 05:57:42 flab cconf: now destroying mutex auth_supported_init
Jan 28 05:57:42 flab cconf: now destroying mutex logger_lock
Jan 28 05:57:42 flab cconf: now destroying mutex Clock::lock

We thought link order would dictate the order of global constructors in gcc. I guess we'll have to find out if that is true!

Actions #3

Updated by Colin McCabe about 13 years ago

  • Status changed from New to Resolved
Actions

Also available in: Atom PDF