Actions
Bug #41419
openmds: missing dirfrag damaged check before CDir::fetch
Status:
New
Priority:
High
Assignee:
-
Category:
-
Target version:
-
% Done:
0%
Source:
Development
Tags:
Backport:
nautilus,mimic
Regression:
No
Severity:
3 - minor
Reviewed:
Affected Versions:
ceph-qa-suite:
Component(FS):
MDS
Labels (FS):
Pull request ID:
Crash signature (v1):
Crash signature (v2):
Description
we don't have damaged check before every CDir::fetch. It can cause request leak.
An user encountered following crash when he handles damaged dirfrags.
ceph version 12.2.8 (ae699615bac534ea496ee965ac6192cb7e0e07c0) luminous (stable) 1: (()+0x5c15b4) [0x564a1d4e65b4] 2: (()+0x11390) [0x7f991a947390] 3: (gsignal()+0x38) [0x7f99198d7428] 4: (abort()+0x16a) [0x7f99198d902a] 5: (ceph::__ceph_assert_fail(char const*, char const*, int, char const*)+0x28e) [0x564a1d52c93e] 6: (Session::~Session()+0x3e6) [0x564a1d1caf76] 7: (Session::~Session()+0x9) [0x564a1d1cb009] 8: (RefCountedObject::put() const+0xfc) [0x564a1d1c879c] 9: (SessionMap::remove_session(Session*)+0x311) [0x564a1d4631e1] 10: (Server::_session_logged(Session*, unsigned long, bool, unsigned long, interval_set<inodeno_t, std::map<inodeno_t, inodeno_t, std::less<inodeno_t>, std::allocator<std::pair<inodeno_t const, inodeno_t> > > >&, unsigned long)+0xbef) [0x564a1d22339f] 11: (C_MDS_session_finish::finish(int)+0x2c) [0x564a1d27d4ec] 12: (MDSIOContextBase::complete(int)+0x98) [0x564a1d46c6b8] 13: (MDSLogContextBase::complete(int)+0x40) [0x564a1d46ca30] 14: (Finisher::finisher_thread_entry()+0x460) [0x564a1d52b8f0] 15: (()+0x76ba) [0x7f991a93d6ba] 16: (clone()+0x6d) [0x7f99199a941d] NOTE: a copy of the executable, or `objdump -rdS <executable>` is needed to interpret this.
Actions