[root@localhost ~]# cd /etc/ceph/ [root@localhost ceph]# vim adminkeyring.bin ceph.conf [root@localhost ceph]# vim ceph.conf [root@localhost ceph]# vim ceph.conf [root@localhost ceph]# grep "registered '" /var/log * [root@localhost ceph]# grep "registered" /var/log * [root@localhost ceph]# grep "registered" /ceph/ * [root@localhost ceph]# [root@localhost ceph]# ls adminkeyring.bin ceph.conf [root@localhost ceph]# ls / bin core.10082 core.10114 core.10135 core.10163 lib null selinux var boot core.10084 core.10118 core.10145 core.10165 lib64 opt srv ceph core.10095 core.10120 core.10148 dev lost+found proc sys cgroup core.10100 core.10130 core.10150 etc media root tmp core.10078 core.10102 core.10133 core.10160 home mnt sbin usr [root@localhost ceph]# cd /root/d dmesg.ceph dmesg.txt downloadsda3/ [root@localhost ceph]# cd /root/ anaconda-ks.cfg Desktop/ .ICEauthority rpmbuild/ .bash_history dmesg.ceph .imsettings.log .setroubleshoot .bash_logout dmesg.txt install.log .ssh/ .bash_profile downloadsda3/ install.log.syslog .subversion/ .bashrc .esd_auth .lesshst .tcshrc .cache/ .gconf/ .local/ .viminfo cconf-error.txt .gconfd/ .mozilla/ .xauth7hlROR ceph.txt .gnome2/ .nautilus/ .xsession-errors .config/ .gnome2_private/ project/ .xsession-errors.old config.log .gstreamer-0.10/ .pulse/ .cshrc .gtk-bookmarks .pulse-cookie .dbus/ .gvfs/ .recently-used.xbel [root@localhost ceph]# cd /root/ [root@localhost ~]# [root@localhost ~]# ls anaconda-ks.cfg ceph.txt Desktop dmesg.txt install.log project cconf-error.txt config.log dmesg.ceph downloadsda3 install.log.syslog rpmbuild [root@localhost ~]# cd project/ [root@localhost project]# ls core.27087 core.27156 core.cconf.6685 list list.cpp [root@localhost project]# mkdir list mkdir: cannot create directory `list': File exists [root@localhost project]# ls core.27087 core.27156 core.cconf.6685 list list.cpp [root@localhost project]# ls -l total 2276 -rw------- 1 root root 536576 Jan 27 10:45 core.27087 -rw------- 1 root root 1327104 Jan 27 11:27 core.27156 -rw------- 1 root root 1777664 Jan 27 13:44 core.cconf.6685 -rwxrwxr-x 1 root root 42389 Jan 27 11:01 list -rw-r--r-- 1 root root 357 Jan 27 11:01 list.cpp [root@localhost project]# mkdir list mkdir: cannot create directory `list': File exists [root@localhost project]# mkdir listd [root@localhost project]# mv core.* list list.cpp listd/ [root@localhost project]# [root@localhost project]# ls listd [root@localhost project]# mkdir cconf [root@localhost project]# cd co bash: cd: co: No such file or directory [root@localhost project]# cd cconf/ [root@localhost cconf]# ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 7902 max locked memory (kbytes, -l) 64 max memory size (kbytes, -m) unlimited open files (-n) 1024 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 8192 cpu time (seconds, -t) unlimited max user processes (-u) 1024 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited [root@localhost cconf]# ulimit -c unlimited [root@localhost cconf]# [root@localhost cconf]# ls [root@localhost cconf]# gdb /usr/bin/cconf GNU gdb (GDB) Fedora (7.2-16.fc14) Copyright (C) 2010 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "x86_64-redhat-linux-gnu". For bug reporting instructions, please see: ... Reading symbols from /usr/bin/cconf...Reading symbols from /usr/lib/debug/usr/bin/cconf.debug...done. done. (gdb) quit [root@localhost cconf]# cd /root/downloadsda3/ceph-0.24.2/src/ [root@localhost src]# ls acconfig.h librados_a-ConfUtils.o acconfig.h.in librados_a-Crypto.o Ager.o librados_a-debug.o AnchorClient.o librados_a-dyn_snprintf.o AnchorServer.o librados_a-errno.o armor.o librados_a-ExportControl.o assert.o librados_a-Finisher.o auth librados_a-KeyRing.o AuthAuthorizeHandler.o librados_a-librados.o AuthClientHandler.o librados_a-lockdep.o AuthMonitor.o librados_a-LogClient.o AuthNoneAuthorizeHandler.o librados_a-Logger.o AuthServiceHandler.o librados_a-MDSMap.o AuthSupported.o librados_a-MemoryModel.o BackTrace.o librados_a-Message.o buffer.o librados_a-MonClient.o builder.o librados_a-MonMap.o cauthtool librados_a-msg_types.o cauthtool.cc librados_a-Objecter.o cauthtool.o librados_a-OSDMap.o cclass librados_a-page.o cclass.in librados_a-RotatingKeyRing.o cclsinfo librados_a-sctp_crc32.o cconf librados_a-signal.o cconf.cc librados_a-SimpleMessenger.o cconf.o librados_a-str_list.o cdebugpack librados_a-Timer.o cdebugpack.in librados_a-tls.o CDentry.o librados_a-WorkQueue.o CDir.o librados.cc ceph libradosgw.a ceph-ceph.o librados.la ceph_common.sh librados_la-armor.lo ceph_frag.o librados_la-armor.o cephfs librados_la-assert.lo cephfs.cc librados_la-assert.o ceph_fs.o librados_la-AuthAuthorizeHandler.lo cephfs.o librados_la-AuthAuthorizeHandler.o ceph-gui.o librados_la-AuthClientHandler.lo ceph_hash.o librados_la-AuthClientHandler.o ceph-SimpleMessenger.o librados_la-AuthNoneAuthorizeHandler.lo ceph_strings.o librados_la-AuthNoneAuthorizeHandler.o ceph_ver.c librados_la-AuthSupported.lo ceph_ver.h librados_la-AuthSupported.o ceph_ver.o librados_la-BackTrace.lo CephxAuthorizeHandler.o librados_la-BackTrace.o CephxClientHandler.o librados_la-buffer.lo CephxKeyServer.o librados_la-buffer.o CephxProtocol.o librados_la-ceph_frag.lo CephxServiceHandler.o librados_la-ceph_frag.o cfuse librados_la-ceph_fs.lo cfuse.cc librados_la-ceph_fs.o cfuse-cfuse.o librados_la-ceph_hash.lo cfuse-fuse_ll.o librados_la-ceph_hash.o cfuse-fuse.o librados_la-ceph_strings.lo cfuse-SimpleMessenger.o librados_la-ceph_strings.o check_version librados_la-ceph_ver.lo CInode.o librados_la-ceph_ver.o ClassHandler.o librados_la-CephxAuthorizeHandler.lo ClassLibrary.o librados_la-CephxAuthorizeHandler.o ClassMonitor.o librados_la-CephxClientHandler.lo client librados_la-CephxClientHandler.o Client.o librados_la-CephxProtocol.lo Clock.o librados_la-CephxProtocol.o cls_acl.cc librados_la-ClassLibrary.lo cls_crypto.cc librados_la-ClassLibrary.o cls_rbd.cc librados_la-Clock.lo cmds librados_la-Clock.o cmds.cc librados_la-common_init.lo cmds-cmds.o librados_la-common_init.o cmds-SimpleMessenger.o librados_la-config.lo cmon librados_la-config.o cmon.cc librados_la-ConfUtils.lo cmon.o librados_la-ConfUtils.o cm.txt librados_la-Crypto.lo common librados_la-Crypto.o common_init.o librados_la-debug.lo config.cc librados_la-debug.o config.h librados_la-dyn_snprintf.lo config.o librados_la-dyn_snprintf.o ConfUtils.o librados_la-errno.lo cosd librados_la-errno.o cosd.cc librados_la-ExportControl.lo cosd-class_api.o librados_la-ExportControl.o cosd-class_debug.o librados_la-Finisher.lo cosd-cosd.o librados_la-Finisher.o cosd-SimpleMessenger.o librados_la-KeyRing.lo crun librados_la-KeyRing.o crush librados_la-librados.lo crush.o librados_la-librados.o crushtool librados_la-lockdep.lo crushtool.cc librados_la-lockdep.o crushtool.o librados_la-LogClient.lo Crypto.o librados_la-LogClient.o csyn librados_la-Logger.lo csyn.cc librados_la-Logger.o csyn.o librados_la-MDSMap.lo debug.o librados_la-MDSMap.o Dumper.o librados_la-MemoryModel.lo dumpjournal librados_la-MemoryModel.o dumpjournal.cc librados_la-Message.lo dumpjournal.o librados_la-Message.o dupstore librados_la-MonClient.lo dupstore.cc librados_la-MonClient.o dupstore.o librados_la-MonMap.lo dyn_snprintf.o librados_la-MonMap.o Elector.o librados_la-msg_types.lo errno.o librados_la-msg_types.o ExportControl.o librados_la-Objecter.lo fetch_config librados_la-Objecter.o fiemap.o librados_la-OSDMap.lo FileJournal.o librados_la-OSDMap.o Filer.o librados_la-page.lo FileStore.o librados_la-page.o Finisher.o librados_la-RotatingKeyRing.lo hash.o librados_la-RotatingKeyRing.o include librados_la-sctp_crc32.lo init-ceph librados_la-sctp_crc32.o init-ceph.in librados_la-signal.lo InoTable.o librados_la-signal.o Journaler.o librados_la-SimpleMessenger.lo JournalingObjectStore.o librados_la-SimpleMessenger.o journal.o librados_la-str_list.lo KeyRing.o librados_la-str_list.o libceph.cc librados_la-Timer.lo libceph.la librados_la-Timer.o libceph_la-armor.lo librados_la-tls.lo libceph_la-armor.o librados_la-tls.o libceph_la-assert.lo librados_la-WorkQueue.lo libceph_la-assert.o librados_la-WorkQueue.o libceph_la-AuthAuthorizeHandler.lo lockdep.o libceph_la-AuthAuthorizeHandler.o Locker.o libceph_la-AuthClientHandler.lo locks.o libceph_la-AuthClientHandler.o LogClient.o libceph_la-AuthNoneAuthorizeHandler.lo LogEvent.o libceph_la-AuthNoneAuthorizeHandler.o Logger.o libceph_la-AuthSupported.lo LogMonitor.o libceph_la-AuthSupported.o logrotate.conf libceph_la-BackTrace.lo Makefile libceph_la-BackTrace.o Makefile.am libceph_la-buffer.lo Makefile.in libceph_la-buffer.o make_version libceph_la-ceph_frag.lo mapper.o libceph_la-ceph_frag.o MDBalancer.o libceph_la-ceph_fs.lo MDCache.o libceph_la-ceph_fs.o MDLog.o libceph_la-ceph_hash.lo mds libceph_la-ceph_hash.o MDSMap.o libceph_la-ceph_strings.lo MDSMonitor.o libceph_la-ceph_strings.o MDS.o libceph_la-ceph_ver.lo MDSTableClient.o libceph_la-ceph_ver.o MDSTable.o libceph_la-CephxAuthorizeHandler.lo MDSTableServer.o libceph_la-CephxAuthorizeHandler.o MemoryModel.o libceph_la-CephxClientHandler.lo Message.o libceph_la-CephxClientHandler.o messages libceph_la-CephxProtocol.lo Migrator.o libceph_la-CephxProtocol.o mkcephfs libceph_la-ClassLibrary.lo mkcephfs.in libceph_la-ClassLibrary.o mon libceph_la-Client.lo MonCaps.o libceph_la-Client.o MonClient.o libceph_la-Clock.lo Monitor.o libceph_la-Clock.o MonitorStore.o libceph_la-common_init.lo MonmapMonitor.o libceph_la-common_init.o MonMap.o libceph_la-config.lo monmaptool libceph_la-config.o monmaptool.cc libceph_la-ConfUtils.lo monmaptool.o libceph_la-ConfUtils.o mount libceph_la-Crypto.lo mount.ceph libceph_la-Crypto.o mount.ceph.o libceph_la-debug.lo msg libceph_la-debug.o msg_types.o libceph_la-dyn_snprintf.lo objclass libceph_la-dyn_snprintf.o ObjectCacher.o libceph_la-errno.lo Objecter.o libceph_la-errno.o os libceph_la-ExportControl.lo osbdb libceph_la-ExportControl.o osd libceph_la-Filer.lo osdc libceph_la-Filer.o OSDCaps.o libceph_la-Finisher.lo OSDMap.o libceph_la-Finisher.o osdmaptool libceph_la-Journaler.lo osdmaptool.cc libceph_la-Journaler.o osdmaptool.o libceph_la-KeyRing.lo OSDMonitor.o libceph_la-KeyRing.o OSD.o libceph_la-libceph.lo page.o libceph_la-libceph.o Paxos.o libceph_la-lockdep.lo PaxosService.o libceph_la-lockdep.o PGMonitor.o libceph_la-LogClient.lo PG.o libceph_la-LogClient.o psim libceph_la-Logger.lo psim.cc libceph_la-Logger.o psim.o libceph_la-MDSMap.lo rados libceph_la-MDSMap.o radosacl libceph_la-MemoryModel.lo radosacl.cc libceph_la-MemoryModel.o radosacl.o libceph_la-Message.lo rados.cc libceph_la-Message.o radosgw libceph_la-MonClient.lo radosgw_admin libceph_la-MonClient.o rados.o libceph_la-MonMap.lo rbd libceph_la-MonMap.o rbd.cc libceph_la-msg_types.lo rbd.o libceph_la-msg_types.o README libceph_la-ObjectCacher.lo ReplicatedPG.o libceph_la-ObjectCacher.o rgw libceph_la-Objecter.lo rgw_access.o libceph_la-Objecter.o rgw_acl.o libceph_la-OSDMap.lo rgw_admin.o libceph_la-OSDMap.o rgw_common.o libceph_la-page.lo rgw_fs.o libceph_la-page.o rgw_main.o libceph_la-RotatingKeyRing.lo rgw_op.o libceph_la-RotatingKeyRing.o rgw_rados.o libceph_la-sctp_crc32.lo rgw_rest.o libceph_la-sctp_crc32.o rgw_user.o libceph_la-signal.lo RotatingKeyRing.o libceph_la-signal.o sample.ceph.conf libceph_la-SimpleMessenger.lo sample.fetch_config libceph_la-SimpleMessenger.o sctp_crc32.o libceph_la-str_list.lo Server.o libceph_la-str_list.o SessionMap.o libceph_la-Timer.lo signal.o libceph_la-Timer.o SimpleMessenger.o libceph_la-tls.lo snap.o libceph_la-tls.o SnapServer.o libceph_la-WorkQueue.lo stamp-h1 libceph_la-WorkQueue.o stop.sh libclient.a streamtest libcls_rbd.la streamtest.cc libcls_rbd_la-cls_rbd.lo streamtest.o libcls_rbd_la-cls_rbd.o str_list.o libcommon.a SyntheticClient.o libcrush.a test libcrush.la testceph libcrush_la-builder.lo testceph.o libcrush_la-builder.o testcrypto libcrush_la-crush.lo testcrypto.cc libcrush_la-crush.o testcrypto.o libcrush_la-hash.lo testencoding libcrush_la-hash.o TestEncoding.o libcrush_la-mapper.lo test_ioctls libcrush_la-mapper.o test_ioctls.o libmds.a testkeys libmon.a testkeys.cc libos.a testkeys.o libosd.a testmsgr libosdc.a testmsgr.cc librados.a testmsgr.o librados_a-armor.o testrados librados_a-assert.o testrados.c librados_a-AuthAuthorizeHandler.o testrados.o librados_a-AuthClientHandler.o testradospp librados_a-AuthNoneAuthorizeHandler.o testradospp.cc librados_a-AuthSupported.o testradospp.o librados_a-BackTrace.o testtimers librados_a-buffer.o TestTimers.o librados_a-ceph_frag.o test_trans librados_a-ceph_fs.o test_trans.cc librados_a-ceph_hash.o test_trans.o librados_a-ceph_strings.o Timer.o librados_a-ceph_ver.o tls.o librados_a-CephxAuthorizeHandler.o TODO librados_a-CephxClientHandler.o tools librados_a-CephxProtocol.o Trace.o librados_a-ClassLibrary.o verify-mds-journal.sh librados_a-Clock.o vstart.sh librados_a-common_init.o WorkQueue.o librados_a-config.o [root@localhost src]# gdb ./cconf cconf cconf.cc cconf.o [root@localhost src]# gdb ./cconf GNU gdb (GDB) Fedora (7.2-16.fc14) Copyright (C) 2010 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "x86_64-redhat-linux-gnu". For bug reporting instructions, please see: ... Reading symbols from /root/downloadsda3/ceph-0.24.2/src/cconf...done. (gdb) set args -c /etc/ceph/ceph.conf -l mon (gdb) break Mutex::Mutex Breakpoint 1 at 0x45d023: file ./common/Mutex.h, line 63. (gdb) break SafeTimer::SafeTimer Breakpoint 2 at 0x48d4bc: file common/Timer.cc, line 51. (gdb) break SafeTimer::~SafeTimer Breakpoint 3 at 0x48d55a: file common/Timer.cc, line 57. (gdb) break SafeTimer::init Breakpoint 4 at 0x48d612: file common/Timer.cc, line 62. (gdb) break Mutex::~Mutex Breakpoint 5 at 0x45d149: file ./common/Mutex.h, line 97. (gdb) break Mutex::Lock Breakpoint 6 at 0x45a5f2: file common/Mutex.h, line 115. (gdb) break Mutex::UnLock the class Mutex does not have any method named UnLock Hint: try 'Mutex::UnLock or 'Mutex::UnLock (Note leading single quote.) Make breakpoint pending on future shared library load? (y or [n]) y Breakpoint 7 (Mutex::UnLock) pending. (gdb) break Mutex::Unlock Breakpoint 8 at 0x4653d9: file ./common/Mutex.h, line 123. (gdb) break SafeTimer::shutdown Breakpoint 9 at 0x48d6cf: file common/Timer.cc, line 69. (gdb) break lockdep_register Breakpoint 10 at 0x473b4f: file common/lockdep.cc, line 79. (gdb) l 18 19 static void usage() 20 { 21 cerr << "usage: cconf <-c filename> [-t type] [-i id] [-l|--list_sections ] [-s
] [[-s section] ... ] [default]" << std::endl; 22 exit(1); 23 } 24 25 int main(int argc, const char **argv) 26 { 27 const char *key = NULL, *defval = NULL; (gdb) 28 const char *list_sections = 0; 29 char *val; 30 char *section; 31 int param = 0; 32 vector args, nargs; 33 deque sections; 34 unsigned i; 35 std::vector empty_args; 36 char buf[1024]; 37 DEFINE_CONF_VARS(usage); (gdb) 38 39 argv_to_vec(argc, argv, args); 40 env_to_vec(args); 41 42 if (args.size() < 2) 43 usage(); 44 45 FOR_EACH_ARG(args) { 46 if (CONF_ARG_EQ("type", 't')) { 47 CONF_SAFE_SET_ARG_VAL(&type, OPT_STR); (gdb) 48 } else if (CONF_ARG_EQ("id", 'i')) { 49 CONF_SAFE_SET_ARG_VAL(&g_conf.id, OPT_STR); 50 } else { 51 nargs.push_back(args[i]); 52 } 53 } 54 args.swap(nargs); 55 56 common_set_defaults(false); 57 common_init(args, type, false); (gdb) 58 59 FOR_EACH_ARG(args) { 60 if (CONF_ARG_EQ("list_sections", 'l')) { 61 CONF_SAFE_SET_ARG_VAL(&list_sections, OPT_STR); 62 } else if (CONF_ARG_EQ("section", 's')) { 63 CONF_SAFE_SET_ARG_VAL(§ion, OPT_STR); 64 sections.push_back(section); 65 } else if (*args[i] != '-') { 66 switch (param) { 67 case 0: (gdb) 68 key = args[i]; 69 break; 70 case 1: 71 defval = args[i]; 72 break; 73 } 74 param++; 75 } else { 76 cerr << "unrecognized argument: " << args[i] << std::endl; 77 usage(); (gdb) 78 } 79 } 80 81 if (!list_sections && (param < 1 || param > 2)) 82 usage(); 83 84 ConfFile *cf = conf_get_conf_file(); 85 86 assert(cf); 87 (gdb) 88 if (list_sections) { 89 for (std::list::const_iterator p = cf->get_section_list().begin(); 90 p != cf->get_section_list().end(); 91 p++) { 92 if (strncmp(list_sections, (*p)->get_name().c_str(), strlen(list_sections)) == 0) 93 cout << (*p)->get_name() << std::endl; 94 } 95 return 0; 96 } 97 (gdb) break 95 Breakpoint 11 at 0x45a0de: file cconf.cc, line 95. (gdb) r Starting program: /root/downloadsda3/ceph-0.24.2/src/cconf -c /etc/ceph/ceph.conf -l mon [Thread debugging using libthread_db enabled] Breakpoint 1, Mutex::Mutex (this=0x6e0ce0, n=0x49d94f "logger_lock", r=false, ld=true, bt=false) at ./common/Mutex.h:63 63 name(n), id(-1), recursive(r), lockdep(ld), backtrace(bt), nlock(0) { Missing separate debuginfos, use: debuginfo-install cryptopp-5.6.1-1.fc14.x86_64 glibc-2.12.90-17.x86_64 libgcc-4.5.1-4.fc14.x86_64 libstdc++-4.5.1-4.fc14.x86_64 (gdb) p lockdep $1 = false (gdb) p g_lockdep $2 = 0 (gdb) n 64 if (recursive) { (gdb) 75 else if (lockdep) { (gdb) 82 pthread_mutexattr_init(&attr); (gdb) 83 pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_ERRORCHECK); (gdb) 84 pthread_mutex_init(&_m, &attr); (gdb) n 85 if (g_lockdep) (gdb) 95 } (gdb) __static_initialization_and_destruction_0 (__initialize_p=1, __priority=65535) at common/Logger.cc:35 35 SafeTimer logger_timer(logger_lock); (gdb) s Breakpoint 2, SafeTimer::SafeTimer (this=0x6e0d20, l=...) at common/Timer.cc:51 51 stopping(false) (gdb) n 53 } (gdb) __static_initialization_and_destruction_0 (__initialize_p=1, __priority=65535) at common/Logger.cc:37 37 list logger_list; (gdb) n 38 utime_t start; (gdb) 51 } stopper; (gdb) 400 } (gdb) n 0x0000000000499166 in __do_global_ctors_aux () (gdb) Single stepping until exit from function __do_global_ctors_aux, which has no line number information. Breakpoint 1, Mutex::Mutex (this=0x6e0b80, n=0x49cd29 "auth_supported_init", r=false, ld=true, bt=false) at ./common/Mutex.h:63 63 name(n), id(-1), recursive(r), lockdep(ld), backtrace(bt), nlock(0) { (gdb) 64 if (recursive) { (gdb) 75 else if (lockdep) { (gdb) 82 pthread_mutexattr_init(&attr); (gdb) 83 pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_ERRORCHECK); (gdb) 84 pthread_mutex_init(&_m, &attr); (gdb) 85 if (g_lockdep) (gdb) 95 } (gdb) __static_initialization_and_destruction_0 (__initialize_p=1, __priority=65535) at auth/AuthSupported.cc:23 23 static map auth_supported; (gdb) 54 } (gdb) n 0x0000000000499166 in __do_global_ctors_aux () (gdb) Single stepping until exit from function __do_global_ctors_aux, which has no line number information. Breakpoint 1, Mutex::Mutex (this=0x6cc1c0, n=0x49ab25 "stringtable::lock", r=false, ld=true, bt=false) at ./common/Mutex.h:63 63 name(n), id(-1), recursive(r), lockdep(ld), backtrace(bt), nlock(0) { (gdb) 64 if (recursive) { (gdb) 75 else if (lockdep) { (gdb) 82 pthread_mutexattr_init(&attr); (gdb) 83 pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_ERRORCHECK); (gdb) 84 pthread_mutex_init(&_m, &attr); (gdb) 85 if (g_lockdep) (gdb) 95 } (gdb) n __static_initialization_and_destruction_0 (__initialize_p=1, __priority=65535) at config.cc:74 74 static ConfFileDestructor cfd; (gdb) 77 atomic_t _num_threads(0); (gdb) n 93 std::map g_fake_kill_after; (gdb) 96 md_config_t g_conf; (gdb) 809 static bool g_conf_initialized = init_g_conf(); (gdb) 1255 } (gdb) n 0x0000000000499166 in __do_global_ctors_aux () (gdb) Single stepping until exit from function __do_global_ctors_aux, which has no line number information. Breakpoint 1, Mutex::Mutex (this=0x6c5f40, n=0x49a60b "_dout_lock", r=false, ld=false, bt=false) at ./common/Mutex.h:63 63 name(n), id(-1), recursive(r), lockdep(ld), backtrace(bt), nlock(0) { (gdb) n 64 if (recursive) { (gdb) n 75 else if (lockdep) { (gdb) 93 pthread_mutex_init(&_m, NULL); (gdb) 95 } (gdb) __static_initialization_and_destruction_0 (__initialize_p=1, __priority=65535) at common/debug.cc:31 31 std::ofstream _dout_out; (gdb) 209 } (gdb) 0x0000000000499166 in __do_global_ctors_aux () (gdb) Single stepping until exit from function __do_global_ctors_aux, which has no line number information. Breakpoint 1, Mutex::Mutex (this=0x6c5ed0, n=0x499425 "Clock::lock", r=false, ld=true, bt=false) at ./common/Mutex.h:63 63 name(n), id(-1), recursive(r), lockdep(ld), backtrace(bt), nlock(0) { (gdb) 64 if (recursive) { (gdb) 75 else if (lockdep) { (gdb) 82 pthread_mutexattr_init(&attr); (gdb) 83 pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_ERRORCHECK); (gdb) 84 pthread_mutex_init(&_m, &attr); (gdb) 85 if (g_lockdep) (gdb) 95 } (gdb) Clock::Clock (this=0x6c5ec0) at ./common/Clock.h:46 46 } (gdb) 0x0000000000499166 in __do_global_ctors_aux () (gdb) Single stepping until exit from function __do_global_ctors_aux, which has no line number information. 0x0000000000458643 in _init () (gdb) Single stepping until exit from function _init, which has no line number information. 0x0000000000499095 in __libc_csu_init () (gdb) Single stepping until exit from function __libc_csu_init, which has no line number information. 0x0000003716a1ee10 in __libc_start_main () from /lib64/libc.so.6 (gdb) Single stepping until exit from function __libc_start_main, which has no line number information. Breakpoint 1, Mutex::Mutex (this=0x6e5ae0, n=0x49ab37 "ExportControl", r=false, ld=true, bt=false) at ./common/Mutex.h:63 63 name(n), id(-1), recursive(r), lockdep(ld), backtrace(bt), nlock(0) { (gdb) 64 if (recursive) { (gdb) 75 else if (lockdep) { (gdb) 82 pthread_mutexattr_init(&attr); (gdb) 83 pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_ERRORCHECK); (gdb) 84 pthread_mutex_init(&_m, &attr); (gdb) 85 if (g_lockdep) (gdb) 95 } (gdb) parse_startup_config_options (args=std::vector of length 2, capacity 2 = {...}, module_type=0x0) at config.cc:1190 1190 ec->load(cf); (gdb) Breakpoint 6, Mutex::Lock (this=0x6e5ae0, no_lockdep=false) at common/Mutex.h:115 115 if (lockdep && g_lockdep && !no_lockdep) _will_lock(); (gdb) p lockdep $3 = true (gdb) p g_lockdep $4 = 0 (gdb) p no_lockdep $5 = false (gdb) n 116 int r = pthread_mutex_lock(&_m); (gdb) 117 if (lockdep && g_lockdep) _locked(); (gdb) p r $6 = 0 (gdb) n 118 assert(r == 0); (gdb) 119 nlock++; (gdb) 120 } (gdb) p nlock $7 = 1 (gdb) n Mutex::Locker::Locker (this=0x7fffffffc940, m=...) at ./common/Mutex.h:140 140 } (gdb) n ExportControl::load (this=0x6e5ab0, conf=0x6e6840) at auth/ExportControl.cc:576 576 int mnt_len = strlen(MOUNT_SEC_NAME); (gdb) 577 int grp_len = strlen(GROUP_SEC_NAME); (gdb) 578 int client_len = strlen(CLIENT_SEC_NAME); (gdb) 579 char *allow_str = NULL; (gdb) 580 char *allow_def = NULL; (gdb) 584 if (!conf) (gdb) 587 ret = conf->read("mount", "allow", &allow_def, EVERYONE); (gdb) 589 for (std::list::const_iterator p = conf->get_section_list().begin(); (gdb) p allow_def $8 = 0x6e5860 "0.0.0.0/0" (gdb) n 590 p != conf->get_section_list().end(); (gdb) 589 for (std::list::const_iterator p = conf->get_section_list().begin(); (gdb) 590 p != conf->get_section_list().end(); (gdb) 589 for (std::list::const_iterator p = conf->get_section_list().begin(); (gdb) 593 if (strncmp(MOUNT_SEC_NAME, (*p)->get_name().c_str(), mnt_len) == 0) { (gdb) 622 } else if ((strncmp(GROUP_SEC_NAME, (*p)->get_name().c_str(), grp_len) == 0) || (gdb) 623 (strncmp(CLIENT_SEC_NAME, (*p)->get_name().c_str(), client_len) == 0)) { (gdb) 622 } else if ((strncmp(GROUP_SEC_NAME, (*p)->get_name().c_str(), grp_len) == 0) || (gdb) 591 p++) { (gdb) 589 for (std::list::const_iterator p = conf->get_section_list().begin(); (gdb) 590 p != conf->get_section_list().end(); (gdb) 589 for (std::list::const_iterator p = conf->get_section_list().begin(); (gdb) 590 p != conf->get_section_list().end(); (gdb) 589 for (std::list::const_iterator p = conf->get_section_list().begin(); (gdb) 593 if (strncmp(MOUNT_SEC_NAME, (*p)->get_name().c_str(), mnt_len) == 0) { (gdb) 622 } else if ((strncmp(GROUP_SEC_NAME, (*p)->get_name().c_str(), grp_len) == 0) || (gdb) 623 (strncmp(CLIENT_SEC_NAME, (*p)->get_name().c_str(), client_len) == 0)) { (gdb) 622 } else if ((strncmp(GROUP_SEC_NAME, (*p)->get_name().c_str(), grp_len) == 0) || (gdb) 591 p++) { (gdb) 589 for (std::list::const_iterator p = conf->get_section_list().begin(); (gdb) finish Run till exit from #0 ExportControl::load (this=0x6e5ab0, conf=0x6e6840) at auth/ExportControl.cc:589 Breakpoint 6, Mutex::Lock (this=0x6c5f40, no_lockdep=false) at common/Mutex.h:115 115 if (lockdep && g_lockdep && !no_lockdep) _will_lock(); (gdb) n 116 int r = pthread_mutex_lock(&_m); (gdb) 117 if (lockdep && g_lockdep) _locked(); (gdb) 118 assert(r == 0); (gdb) 119 nlock++; (gdb) 120 } (gdb) p nlock $9 = 1 (gdb) n _dout_begin_line () at ./common/debug.h:43 43 if (_dout_need_open) (gdb) 44 _dout_open_log(); (gdb) 45 *_dout << g_clock.now() << " " << std::hex << pthread_self() << std::dec << " "; (gdb) 46 } (gdb) _dout_begin_line_static () at ./common/debug.h:49 49 } (gdb) n operator<< (out=...) at ./common/debug.h:66 66 return out; (gdb) 67 } (gdb) 2011-01-28 12:26:04.040252 7ffff7fe0740 ** creating new group with no options (everyone) Breakpoint 8, Mutex::Unlock (this=0x6c5f40) at ./common/Mutex.h:123 123 assert(nlock > 0); (gdb) 124 --nlock; (gdb) 125 if (lockdep && g_lockdep) _will_unlock(); (gdb) 126 int r = pthread_mutex_unlock(&_m); (gdb) 127 assert(r == 0); (gdb) 128 } (gdb) _dout_end_line () at ./common/debug.h:53 53 } (gdb) GroupsManager::get_group (this=0x6e0c20, name=0x6e5b36 "everyone") at auth/ExportControl.cc:325 325 group = new GroupEntry(subnet); (gdb) 326 subnet = NULL; (gdb) 327 groups_map[group_name] = group; (gdb) 328 goto done; (gdb) 346 free(orig_tmp); (gdb) 347 delete subnet; (gdb) 348 return group; (gdb) 349 } (gdb) ExportControl::load (this=0x6e5ab0, conf=0x6e6840) at auth/ExportControl.cc:636 636 if (exp) (gdb) 637 exp->init(conf, section, NULL); (gdb) Breakpoint 6, Mutex::Lock (this=0x6c5f40, no_lockdep=false) at common/Mutex.h:115 115 if (lockdep && g_lockdep && !no_lockdep) _will_lock(); (gdb) 116 int r = pthread_mutex_lock(&_m); (gdb) 117 if (lockdep && g_lockdep) _locked(); (gdb) 118 assert(r == 0); (gdb) 119 nlock++; (gdb) 120 } (gdb) p nlock $10 = 1 (gdb) n _dout_begin_line () at ./common/debug.h:43 43 if (_dout_need_open) (gdb) 45 *_dout << g_clock.now() << " " << std::hex << pthread_self() << std::dec << " "; (gdb) 46 } (gdb) p _dout_need_open $11 = false (gdb) n _dout_begin_line_static () at ./common/debug.h:49 49 } (gdb) operator<< (out=...) at ./common/debug.h:66 66 return out; (gdb) 67 } (gdb) 2011-01-28 12:27:11.370165 7ffff7fe0740 parse_addr_line str=0.0.0.0/0 Breakpoint 8, Mutex::Unlock (this=0x6c5f40) at ./common/Mutex.h:123 123 assert(nlock > 0); (gdb) 124 --nlock; (gdb) 125 if (lockdep && g_lockdep) _will_unlock(); (gdb) 126 int r = pthread_mutex_unlock(&_m); (gdb) 127 assert(r == 0); (gdb) 128 } (gdb) _dout_end_line () at ./common/debug.h:53 53 } (gdb) GroupEntry::parse_addr_line (this=0x6ed100, str=0x6e5b50 "0.0.0.0/0") at auth/ExportControl.cc:201 201 val = strsep(&s, ", \t"); (gdb) 202 if (*val) { (gdb) 203 GroupEntry *group = groups_mgr.get_group(val); (gdb) finish Run till exit from #0 GroupEntry::parse_addr_line (this=0x6ed100, str=0x6e5b50 "0.0.0.0/0") at auth/ExportControl.cc:203 Breakpoint 6, Mutex::Lock (this=0x6c5f40, no_lockdep=false) at common/Mutex.h:115 115 if (lockdep && g_lockdep && !no_lockdep) _will_lock(); (gdb) n 116 int r = pthread_mutex_lock(&_m); (gdb) 117 if (lockdep && g_lockdep) _locked(); (gdb) 118 assert(r == 0); (gdb) 119 nlock++; (gdb) 120 } (gdb) _dout_begin_line () at ./common/debug.h:43 43 if (_dout_need_open) (gdb) 45 *_dout << g_clock.now() << " " << std::hex << pthread_self() << std::dec << " "; (gdb) 46 } (gdb) _dout_begin_line_static () at ./common/debug.h:49 49 } (gdb) operator<< (out=...) at ./common/debug.h:66 66 return out; (gdb) 67 } (gdb) n 2011-01-28 12:28:05.783551 7ffff7fe0740 Subnet::parse str=0.0.0.0/0 Breakpoint 8, Mutex::Unlock (this=0x6c5f40) at ./common/Mutex.h:123 123 assert(nlock > 0); (gdb) 124 --nlock; (gdb) 125 if (lockdep && g_lockdep) _will_unlock(); (gdb) p nlock $12 = 0 (gdb) n 126 int r = pthread_mutex_unlock(&_m); (gdb) 127 assert(r == 0); (gdb) 128 } (gdb) _dout_end_line () at ./common/debug.h:53 53 } (gdb) Subnet::parse (this=0x6e5ca0, str=0x6e5c60 "0.0.0.0/0") at auth/ExportControl.cc:91 91 orig_str = strdup(str); (gdb) 93 ret = sscanf(str, "%hhd.%hhd.%hhd.%hhd/%s", &ip[0], &ip[1], &ip[2], &ip[3], mask_str); (gdb) finish Run till exit from #0 Subnet::parse (this=0x6e5ca0, str=0x6e5c60 "0.0.0.0/0") at auth/ExportControl.cc:93 Breakpoint 6, Mutex::Lock (this=0x6c5f40, no_lockdep=false) at common/Mutex.h:115 115 if (lockdep && g_lockdep && !no_lockdep) _will_lock(); (gdb) n 116 int r = pthread_mutex_lock(&_m); (gdb) 117 if (lockdep && g_lockdep) _locked(); (gdb) 118 assert(r == 0); (gdb) 119 nlock++; (gdb) 120 } (gdb) _dout_begin_line () at ./common/debug.h:43 43 if (_dout_need_open) (gdb) 45 *_dout << g_clock.now() << " " << std::hex << pthread_self() << std::dec << " "; (gdb) 46 } (gdb) _dout_begin_line_static () at ./common/debug.h:49 49 } (gdb) operator<< (out=...) at ./common/debug.h:66 66 return out; (gdb) 67 } (gdb) n 2011-01-28 12:29:11.150241 7ffff7fe0740 parsed str=0.0.0.0/0 Breakpoint 8, Mutex::Unlock (this=0x6c5f40) at ./common/Mutex.h:123 123 assert(nlock > 0); (gdb) p nlock $13 = 1 (gdb) n 124 --nlock; (gdb) 125 if (lockdep && g_lockdep) _will_unlock(); (gdb) 126 int r = pthread_mutex_unlock(&_m); (gdb) 127 assert(r == 0); (gdb) 128 } (gdb) _dout_end_line () at ./common/debug.h:53 53 } (gdb) Subnet::parse (this=0x6e5ca0, str=0x6e5c60 "0.0.0.0/0") at auth/ExportControl.cc:123 123 memcpy(&GET_IP(&subnet.addr), ip, 4); (gdb) finish Run till exit from #0 Subnet::parse (this=0x6e5ca0, str=0x6e5c60 "0.0.0.0/0") at auth/ExportControl.cc:123 Breakpoint 6, Mutex::Lock (this=0x6c5f40, no_lockdep=false) at common/Mutex.h:115 115 if (lockdep && g_lockdep && !no_lockdep) _will_lock(); (gdb) n 116 int r = pthread_mutex_lock(&_m); (gdb) 117 if (lockdep && g_lockdep) _locked(); (gdb) 118 assert(r == 0); (gdb) 119 nlock++; (gdb) 120 } (gdb) _dout_begin_line () at ./common/debug.h:43 43 if (_dout_need_open) (gdb) 45 *_dout << g_clock.now() << " " << std::hex << pthread_self() << std::dec << " "; (gdb) 46 } (gdb) _dout_begin_line_static () at ./common/debug.h:49 49 } (gdb) operator<< (out=...) at ./common/debug.h:66 66 return out; (gdb) 67 } (gdb) Subnet::parse (this=0x6e5ca0, str=0x6e5c60 "0.0.0.0/0") at auth/ExportControl.cc:127 127 << (int)mask[0] << "." << (int)mask[1] << "." << (int)mask[2] << "." << (int)mask[3] << dendl; (gdb) finish Run till exit from #0 Subnet::parse (this=0x6e5ca0, str=0x6e5c60 "0.0.0.0/0") at auth/ExportControl.cc:127 2011-01-28 12:30:04.016837 7ffff7fe0740 --> 0.0.0.0/0.0.0.0 Breakpoint 8, Mutex::Unlock (this=0x6c5f40) at ./common/Mutex.h:123 123 assert(nlock > 0); (gdb) p nlock $14 = 1 (gdb) n 124 --nlock; (gdb) 125 if (lockdep && g_lockdep) _will_unlock(); (gdb) 126 int r = pthread_mutex_unlock(&_m); (gdb) 127 assert(r == 0); (gdb) 128 } (gdb) _dout_end_line () at ./common/debug.h:53 53 } (gdb) Subnet::parse (this=0x6e5ca0, str=0x6e5c60 "0.0.0.0/0") at auth/ExportControl.cc:128 128 dout(30) << hex << GET_IP(&subnet.addr) << dec << dendl; (gdb) finish Run till exit from #0 Subnet::parse (this=0x6e5ca0, str=0x6e5c60 "0.0.0.0/0") at auth/ExportControl.cc:128 Breakpoint 6, Mutex::Lock (this=0x6c5f40, no_lockdep=false) at common/Mutex.h:115 115 if (lockdep && g_lockdep && !no_lockdep) _will_lock(); (gdb) finish Run till exit from #0 Mutex::Lock (this=0x6c5f40, no_lockdep=false) at common/Mutex.h:115 _dout_begin_line () at ./common/debug.h:43 43 if (_dout_need_open) (gdb) n 45 *_dout << g_clock.now() << " " << std::hex << pthread_self() << std::dec << " "; (gdb) 46 } (gdb) _dout_begin_line_static () at ./common/debug.h:49 49 } (gdb) operator<< (out=...) at ./common/debug.h:66 66 return out; (gdb) 67 } (gdb) 2011-01-28 12:30:39.476829 7ffff7fe0740 0 Breakpoint 8, Mutex::Unlock (this=0x6c5f40) at ./common/Mutex.h:123 123 assert(nlock > 0); (gdb) 124 --nlock; (gdb) 125 if (lockdep && g_lockdep) _will_unlock(); (gdb) 126 int r = pthread_mutex_unlock(&_m); (gdb) 127 assert(r == 0); (gdb) 128 } (gdb) _dout_end_line () at ./common/debug.h:53 53 } (gdb) Subnet::parse (this=0x6e5ca0, str=0x6e5c60 "0.0.0.0/0") at auth/ExportControl.cc:130 130 valid = true; (gdb) 131 } (gdb) Subnet::Subnet (this=0x6e5ca0, str=0x6e5c60 "0.0.0.0/0") at auth/ExportControl.cc:50 50 } (gdb) GroupsManager::get_group (this=0x6e0c20, name=0x6e5c60 "0.0.0.0/0") at auth/ExportControl.cc:308 308 iter = groups_map.find(name); (gdb) 310 if (iter != groups_map.end()) { (gdb) 315 group_name = strsep(&tmp, "("); (gdb) 317 if (tmp) { (gdb) 321 if (!options) { (gdb) 322 dout(30) << "** creating new group with no options (" << group_name << ")" << dendl; (gdb) Breakpoint 6, Mutex::Lock (this=0x6c5f40, no_lockdep=false) at common/Mutex.h:115 115 if (lockdep && g_lockdep && !no_lockdep) _will_lock(); (gdb) 116 int r = pthread_mutex_lock(&_m); (gdb) 117 if (lockdep && g_lockdep) _locked(); (gdb) 118 assert(r == 0); (gdb) 119 nlock++; (gdb) 120 } (gdb) _dout_begin_line () at ./common/debug.h:43 43 if (_dout_need_open) (gdb) 45 *_dout << g_clock.now() << " " << std::hex << pthread_self() << std::dec << " "; (gdb) 46 } (gdb) _dout_begin_line_static () at ./common/debug.h:49 49 } (gdb) operator<< (out=...) at ./common/debug.h:66 66 return out; (gdb) 67 } (gdb) 2011-01-28 12:31:04.860119 7ffff7fe0740 ** creating new group with no options (0.0.0.0/0) Breakpoint 8, Mutex::Unlock (this=0x6c5f40) at ./common/Mutex.h:123 123 assert(nlock > 0); (gdb) 124 --nlock; (gdb) 125 if (lockdep && g_lockdep) _will_unlock(); (gdb) 126 int r = pthread_mutex_unlock(&_m); (gdb) 127 assert(r == 0); (gdb) 128 } (gdb) _dout_end_line () at ./common/debug.h:53 53 } (gdb) GroupsManager::get_group (this=0x6e0c20, name=0x6e5c60 "0.0.0.0/0") at auth/ExportControl.cc:325 325 group = new GroupEntry(subnet); (gdb) 326 subnet = NULL; (gdb) 327 groups_map[group_name] = group; (gdb) 328 goto done; (gdb) 346 free(orig_tmp); (gdb) 347 delete subnet; (gdb) 348 return group; (gdb) 349 } (gdb) GroupEntry::parse_addr_line (this=0x6ed100, str=0x6e5b50 "0.0.0.0/0") at auth/ExportControl.cc:204 204 if (group) (gdb) 205 groups.push_back(group); (gdb) 200 do { (gdb) 209 free(orig_s); (gdb) 210 } (gdb) GroupEntry::init (this=0x6ed100, cf=0x6e6840, section=0x6ecad8 "group everyone", options=0x0) at auth/ExportControl.cc:368 368 free(group_str); (gdb) 371 ret = cf->read(section, "read only", &rdonly, 0); (gdb) 373 if (ret) (gdb) 378 if (options) { (gdb) 398 } (gdb) ExportControl::load (this=0x6e5ab0, conf=0x6e6840) at auth/ExportControl.cc:640 640 free(orig_tmp_sec); (gdb) 591 p++) { (gdb) 589 for (std::list::const_iterator p = conf->get_section_list().begin(); (gdb) 590 p != conf->get_section_list().end(); (gdb) 589 for (std::list::const_iterator p = conf->get_section_list().begin(); (gdb) 590 p != conf->get_section_list().end(); (gdb) 589 for (std::list::const_iterator p = conf->get_section_list().begin(); (gdb) 593 if (strncmp(MOUNT_SEC_NAME, (*p)->get_name().c_str(), mnt_len) == 0) { (gdb) 594 const char *section = (*p)->get_name().c_str(); (gdb) 595 char *tmp_sec = strdup(section); (gdb) 597 char *orig_tmp_sec = tmp_sec; (gdb) 598 char *copy_str = NULL; (gdb) 600 strsep(&tmp_sec, " "); (gdb) 601 mnt = tmp_sec; (gdb) finish Run till exit from #0 ExportControl::load (this=0x6e5ab0, conf=0x6e6840) at auth/ExportControl.cc:601 Breakpoint 6, Mutex::Lock (this=0x6c5f40, no_lockdep=false) at common/Mutex.h:115 115 if (lockdep && g_lockdep && !no_lockdep) _will_lock(); (gdb) n 116 int r = pthread_mutex_lock(&_m); (gdb) 117 if (lockdep && g_lockdep) _locked(); (gdb) 118 assert(r == 0); (gdb) 119 nlock++; (gdb) 120 } (gdb) _dout_begin_line () at ./common/debug.h:43 43 if (_dout_need_open) (gdb) 45 *_dout << g_clock.now() << " " << std::hex << pthread_self() << std::dec << " "; (gdb) 46 } (gdb) _dout_begin_line_static () at ./common/debug.h:49 49 } (gdb) operator<< (out=...) at ./common/debug.h:66 66 return out; (gdb) 67 } (gdb) 2011-01-28 12:31:30.176792 7ffff7fe0740 parse_addr_line str=%everyone Breakpoint 8, Mutex::Unlock (this=0x6c5f40) at ./common/Mutex.h:123 123 assert(nlock > 0); (gdb) 124 --nlock; (gdb) 125 if (lockdep && g_lockdep) _will_unlock(); (gdb) 126 int r = pthread_mutex_unlock(&_m); (gdb) 127 assert(r == 0); (gdb) 128 } (gdb) _dout_end_line () at ./common/debug.h:53 53 } (gdb) GroupEntry::parse_addr_line (this=0x6e6030, str=0x6e5ff0 "%everyone") at auth/ExportControl.cc:201 201 val = strsep(&s, ", \t"); (gdb) 202 if (*val) { (gdb) 203 GroupEntry *group = groups_mgr.get_group(val); (gdb) finish Run till exit from #0 GroupEntry::parse_addr_line (this=0x6e6030, str=0x6e5ff0 "%everyone") at auth/ExportControl.cc:203 ExportAddrEntry::ExportAddrEntry (this=0x6e6010, str=0x6e5ff0 "%everyone") at auth/ExportControl.cc:417 417 } (gdb) n ExportEntry::init (this=0x6e5c60, str=0x6e5b50 "%everyone") at auth/ExportControl.cc:488 488 if (ent->is_valid()) { (gdb) finish Run till exit from #0 ExportEntry::init (this=0x6e5c60, str=0x6e5b50 "%everyone") at auth/ExportControl.cc:488 ExportControl::load (this=0x6e5ab0, conf=0x6e6840) at auth/ExportControl.cc:616 616 exports[mnt] = exp; (gdb) finish Run till exit from #0 ExportControl::load (this=0x6e5ab0, conf=0x6e6840) at auth/ExportControl.cc:616 Breakpoint 8, Mutex::Unlock (this=0x6e5ae0) at ./common/Mutex.h:123 123 assert(nlock > 0); (gdb) n 124 --nlock; (gdb) 125 if (lockdep && g_lockdep) _will_unlock(); (gdb) 126 int r = pthread_mutex_unlock(&_m); (gdb) 127 assert(r == 0); (gdb) 128 } (gdb) Mutex::Locker::~Locker (this=0x7fffffffc940, __in_chrg=) at ./common/Mutex.h:143 143 } (gdb) ExportControl::load (this=0x6e5ab0, conf=0x6e6840) at auth/ExportControl.cc:643 643 } (gdb) parse_startup_config_options (args=std::vector of length 2, capacity 2 = {...}, module_type=0x0) at config.cc:1161 1161 list ls; (gdb) finish Run till exit from #0 parse_startup_config_options ( args=std::vector of length 2, capacity 2 = {...}, module_type=0x0) at config.cc:1161 common_init (args=std::vector of length 2, capacity 2 = {...}, module_type=0x0, init_keys=false) at common/common_init.cc:31 31 parse_config_options(args); (gdb) n 32 install_standard_sighandlers(); (gdb) 35 if (g_conf.tcmalloc_profiler_run && g_conf.tcmalloc_have) { (gdb) 48 if (g_conf.log_file && g_conf.log_file[0]) (gdb) 52 if (!g_conf.log_to_stdout) (gdb) 55 if (init_keys && is_supported_auth(CEPH_AUTH_CEPHX)) { (gdb) 84 } (gdb) main (argc=5, argv=0x7fffffffe1d8) at cconf.cc:59 59 FOR_EACH_ARG(args) { (gdb) 60 if (CONF_ARG_EQ("list_sections", 'l')) { (gdb) 61 CONF_SAFE_SET_ARG_VAL(&list_sections, OPT_STR); (gdb) 59 FOR_EACH_ARG(args) { (gdb) 81 if (!list_sections && (param < 1 || param > 2)) (gdb) 84 ConfFile *cf = conf_get_conf_file(); (gdb) 86 assert(cf); (gdb) 88 if (list_sections) { (gdb) 89 for (std::list::const_iterator p = cf->get_section_list().begin(); (gdb) 90 p != cf->get_section_list().end(); (gdb) 89 for (std::list::const_iterator p = cf->get_section_list().begin(); (gdb) 90 p != cf->get_section_list().end(); (gdb) 89 for (std::list::const_iterator p = cf->get_section_list().begin(); (gdb) 92 if (strncmp(list_sections, (*p)->get_name().c_str(), strlen(list_sections)) == 0) (gdb) 91 p++) { (gdb) 89 for (std::list::const_iterator p = cf->get_section_list().begin(); (gdb) 90 p != cf->get_section_list().end(); (gdb) 89 for (std::list::const_iterator p = cf->get_section_list().begin(); (gdb) 90 p != cf->get_section_list().end(); (gdb) 89 for (std::list::const_iterator p = cf->get_section_list().begin(); (gdb) 92 if (strncmp(list_sections, (*p)->get_name().c_str(), strlen(list_sections)) == 0) (gdb) 91 p++) { (gdb) 89 for (std::list::const_iterator p = cf->get_section_list().begin(); (gdb) 90 p != cf->get_section_list().end(); (gdb) 89 for (std::list::const_iterator p = cf->get_section_list().begin(); (gdb) 90 p != cf->get_section_list().end(); (gdb) p logger_lock.is_locked() $15 = false (gdb) n 89 for (std::list::const_iterator p = cf->get_section_list().begin(); (gdb) 92 if (strncmp(list_sections, (*p)->get_name().c_str(), strlen(list_sections)) == 0) (gdb) 91 p++) { (gdb) 89 for (std::list::const_iterator p = cf->get_section_list().begin(); (gdb) 90 p != cf->get_section_list().end(); (gdb) 89 for (std::list::const_iterator p = cf->get_section_list().begin(); (gdb) 90 p != cf->get_section_list().end(); (gdb) 89 for (std::list::const_iterator p = cf->get_section_list().begin(); (gdb) 92 if (strncmp(list_sections, (*p)->get_name().c_str(), strlen(list_sections)) == 0) (gdb) 93 cout << (*p)->get_name() << std::endl; (gdb) mon 91 p++) { (gdb) 89 for (std::list::const_iterator p = cf->get_section_list().begin(); (gdb) 90 p != cf->get_section_list().end(); (gdb) 89 for (std::list::const_iterator p = cf->get_section_list().begin(); (gdb) 90 p != cf->get_section_list().end(); (gdb) 89 for (std::list::const_iterator p = cf->get_section_list().begin(); (gdb) 92 if (strncmp(list_sections, (*p)->get_name().c_str(), strlen(list_sections)) == 0) (gdb) 93 cout << (*p)->get_name() << std::endl; (gdb) mon.0 91 p++) { (gdb) 89 for (std::list::const_iterator p = cf->get_section_list().begin(); (gdb) 90 p != cf->get_section_list().end(); (gdb) 89 for (std::list::const_iterator p = cf->get_section_list().begin(); (gdb) 90 p != cf->get_section_list().end(); (gdb) 89 for (std::list::const_iterator p = cf->get_section_list().begin(); (gdb) 92 if (strncmp(list_sections, (*p)->get_name().c_str(), strlen(list_sections)) == 0) (gdb) 91 p++) { (gdb) 89 for (std::list::const_iterator p = cf->get_section_list().begin(); (gdb) 90 p != cf->get_section_list().end(); (gdb) 89 for (std::list::const_iterator p = cf->get_section_list().begin(); (gdb) 90 p != cf->get_section_list().end(); (gdb) 89 for (std::list::const_iterator p = cf->get_section_list().begin(); (gdb) 92 if (strncmp(list_sections, (*p)->get_name().c_str(), strlen(list_sections)) == 0) (gdb) 91 p++) { (gdb) 89 for (std::list::const_iterator p = cf->get_section_list().begin(); (gdb) 90 p != cf->get_section_list().end(); (gdb) 89 for (std::list::const_iterator p = cf->get_section_list().begin(); (gdb) 90 p != cf->get_section_list().end(); (gdb) 89 for (std::list::const_iterator p = cf->get_section_list().begin(); (gdb) 92 if (strncmp(list_sections, (*p)->get_name().c_str(), strlen(list_sections)) == 0) (gdb) 91 p++) { (gdb) 89 for (std::list::const_iterator p = cf->get_section_list().begin(); (gdb) 90 p != cf->get_section_list().end(); (gdb) 89 for (std::list::const_iterator p = cf->get_section_list().begin(); (gdb) 90 p != cf->get_section_list().end(); (gdb) 89 for (std::list::const_iterator p = cf->get_section_list().begin(); (gdb) 92 if (strncmp(list_sections, (*p)->get_name().c_str(), strlen(list_sections)) == 0) (gdb) 91 p++) { (gdb) 89 for (std::list::const_iterator p = cf->get_section_list().begin(); (gdb) 90 p != cf->get_section_list().end(); (gdb) 89 for (std::list::const_iterator p = cf->get_section_list().begin(); (gdb) 90 p != cf->get_section_list().end(); (gdb) 89 for (std::list::const_iterator p = cf->get_section_list().begin(); (gdb) 92 if (strncmp(list_sections, (*p)->get_name().c_str(), strlen(list_sections)) == 0) (gdb) 91 p++) { (gdb) 89 for (std::list::const_iterator p = cf->get_section_list().begin(); (gdb) 90 p != cf->get_section_list().end(); (gdb) 89 for (std::list::const_iterator p = cf->get_section_list().begin(); (gdb) 90 p != cf->get_section_list().end(); (gdb) 89 for (std::list::const_iterator p = cf->get_section_list().begin(); (gdb) 92 if (strncmp(list_sections, (*p)->get_name().c_str(), strlen(list_sections)) == 0) (gdb) 91 p++) { (gdb) p (*p)->get_name().c_str() $16 = 0x6ecad8 "group everyone" (gdb) n 89 for (std::list::const_iterator p = cf->get_section_list().begin(); (gdb) 90 p != cf->get_section_list().end(); (gdb) 89 for (std::list::const_iterator p = cf->get_section_list().begin(); (gdb) 90 p != cf->get_section_list().end(); (gdb) 89 for (std::list::const_iterator p = cf->get_section_list().begin(); (gdb) 92 if (strncmp(list_sections, (*p)->get_name().c_str(), strlen(list_sections)) == 0) (gdb) 91 p++) { (gdb) 89 for (std::list::const_iterator p = cf->get_section_list().begin(); (gdb) 90 p != cf->get_section_list().end(); (gdb) 89 for (std::list::const_iterator p = cf->get_section_list().begin(); (gdb) 90 p != cf->get_section_list().end(); (gdb) 89 for (std::list::const_iterator p = cf->get_section_list().begin(); (gdb) Breakpoint 11, main (argc=5, argv=0x7fffffffe1d8) at cconf.cc:95 95 return 0; (gdb) 35 std::vector empty_args; (gdb) 33 deque sections; (gdb) 32 vector args, nargs; (gdb) 126 } (gdb) 0x0000003716a1ee7d in __libc_start_main () from /lib64/libc.so.6 (gdb) Single stepping until exit from function __libc_start_main, which has no line number information. Breakpoint 5, Mutex::~Mutex (this=0x6c5ed0, __in_chrg=) at ./common/Mutex.h:97 97 assert(nlock == 0); (gdb) p nlock $17 = 0 (gdb) n 98 pthread_mutex_destroy(&_m); (gdb) 99 } (gdb) n 0x0000003716a379c1 in exit () from /lib64/libc.so.6 (gdb) Single stepping until exit from function exit, which has no line number information. Breakpoint 5, Mutex::~Mutex (this=0x6c5f40, __in_chrg=) at ./common/Mutex.h:97 97 assert(nlock == 0); (gdb) n 98 pthread_mutex_destroy(&_m); (gdb) 99 } (gdb) 0x0000003716a379c1 in exit () from /lib64/libc.so.6 (gdb) Single stepping until exit from function exit, which has no line number information. Breakpoint 5, Mutex::~Mutex (this=0x6cc1c0, __in_chrg=) at ./common/Mutex.h:97 97 assert(nlock == 0); (gdb) 98 pthread_mutex_destroy(&_m); (gdb) 99 } (gdb) 0x0000003716a379c1 in exit () from /lib64/libc.so.6 (gdb) Single stepping until exit from function exit, which has no line number information. Breakpoint 5, Mutex::~Mutex (this=0x6e0b80, __in_chrg=) at ./common/Mutex.h:97 97 assert(nlock == 0); (gdb) p this $18 = (Mutex * const) 0x6e0b80 (gdb) n 98 pthread_mutex_destroy(&_m); (gdb) 99 } (gdb) 0x0000003716a379c1 in exit () from /lib64/libc.so.6 (gdb) Single stepping until exit from function exit, which has no line number information. Breakpoint 6, Mutex::Lock (this=0x6e0ce0, no_lockdep=false) at common/Mutex.h:115 115 if (lockdep && g_lockdep && !no_lockdep) _will_lock(); (gdb) p lockdep $19 = true (gdb) p g_lockdep $20 = 0 (gdb) n 116 int r = pthread_mutex_lock(&_m); (gdb) n 117 if (lockdep && g_lockdep) _locked(); (gdb) 118 assert(r == 0); (gdb) 119 nlock++; (gdb) 120 } (gdb) n stop () at common/Logger.cc:183 183 logger_timer.shutdown(); (gdb) s Breakpoint 9, SafeTimer::shutdown (this=0x6e0d20) at common/Timer.cc:69 69 dout(10) << "shutdown" << dendl; (gdb) n Breakpoint 6, Mutex::Lock (this=0x6c5f40, no_lockdep=false) at common/Mutex.h:115 115 if (lockdep && g_lockdep && !no_lockdep) _will_lock(); (gdb) n 116 int r = pthread_mutex_lock(&_m); (gdb) 117 if (lockdep && g_lockdep) _locked(); (gdb) 118 assert(r == 0); (gdb) common/Mutex.h: In function 'void Mutex::Lock(bool)': common/Mutex.h:118: FAILED assert(r == 0) ceph version 0.24.2 (commit: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 ` 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 (commit: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 ` 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 (gdb)