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.
Updated by Zheng Yan over 4 years ago
another option is make sure all type of callback contexts (passing to CDir::fetch) handle error code
Updated by Patrick Donnelly over 4 years ago
- Priority changed from Normal to High
- Target version set to v15.0.0
- Start date deleted (
08/24/2019) - Source set to Development
- Backport set to nautilus,mimic
- Component(FS) MDS added
Updated by Zheng Yan over 4 years ago
- Assignee deleted (
Ramana Raja)
0> 2019-08-23 15:51:03.871241 7f990ee3e700 -1 /build/ceph-12.2.8/src/include/elist.h: In function 'elist<T>::~elist() [with T = MDRequestImpl*]' thread 7f990ee3e700 time 2019-08-23 15:51:03.860523
/build/ceph-12.2.8/src/include/elist.h: 92: FAILED assert(_head.empty())
Actions