Project

General

Profile

Bug #1512

C++ destructor issues in CompatSet::FeatureSet::~FeatureSet

Added by Colin McCabe over 12 years ago. Updated over 12 years ago.

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

0%

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

Description

rbd tool is crashing on exit().

cmccabe@metropolis:~/ceph2/src$ ./rbd ls
testimage
*** Caught signal (Segmentation fault) **
 in thread 0x7f2c44333720
 ceph version 0.34-445-g22867fe (commit:22867fedcca3a7f35c6fced3d363306309b40673)
 1: (ceph::BackTrace::BackTrace(int)+0x2d) [0x589dab]
 2: /home/cmccabe/ceph2/src/.libs/lt-rbd() [0x589b26]
 3: (()+0xef60) [0x7f2c435dff60]
 4: (std::_Rb_tree<unsigned long, std::pair<unsigned long const, std::string>, std::_Select1st<std::pair<unsigned long const, std::string> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, std::string> > >::_S_right(std::_Rb_tree_node_base*)+0xc) [0x6670a0]
 5: (std::_Rb_tree<unsigned long, std::pair<unsigned long const, std::string>, std::_Select1st<std::pair<unsigned long const, std::string> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, std::string> > >::_M_erase(std::_Rb_tree_node<std::pair<unsigned long const, std::string> >*)+0x1e) [0x65728c]
 6: (std::_Rb_tree<unsigned long, std::pair<unsigned long const, std::string>, std::_Select1st<std::pair<unsigned long const, std::string> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, std::string> > >::_M_erase(std::_Rb_tree_node<std::pair<unsigned long const, std::string> >*)+0x30) [0x65729e]
 7: (std::_Rb_tree<unsigned long, std::pair<unsigned long const, std::string>, std::_Select1st<std::pair<unsigned long const, std::string> >, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, std::string> > >::~_Rb_tree()+0x2d) [0x648c15]
 8: (std::map<unsigned long, std::string, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, std::string> > >::~map()+0x18) [0x626b52]
 9: (CompatSet::FeatureSet::~FeatureSet()+0x1c) [0x626c16]
 10: (CompatSet::~CompatSet()+0x1f) [0x626cb9]
 11: (__cxa_finalize()+0xa5) [0x7f2c42030965]
 12: (()+0x266fe6) [0x7f2c43a53fe6]
Segmentation fault (core dumped)

Looks like another global destructor ordering issue. I took a very quick look but I didn't find who is creating the global object. Someone will have to spend some time on this.

History

#1 Updated by Sage Weil over 12 years ago

  • Target version set to v0.36

I saw this on fatty, but not on my other dev machines.

There are these in mds/MDSMap.h/cc:

extern CompatSet mdsmap_compat;
extern CompatSet mdsmap_compat_base; // pre v0.20

#2 Updated by Sage Weil over 12 years ago

  • translation missing: en.field_position set to 9

#3 Updated by Sage Weil over 12 years ago

  • Assignee set to Colin McCabe

#4 Updated by Colin McCabe over 12 years ago

  • Status changed from New to Resolved

Also available in: Atom PDF