Project

General

Profile

Bug #36378

upmap to same osd twice possible, crashes calc_pg_upmaps

Added by Dan van der Ster over 5 years ago. Updated almost 5 years ago.

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

0%

Source:
Community (user)
Tags:
Backport:
luminous,mimic
Regression:
No
Severity:
3 - minor
Reviewed:
Affected Versions:
ceph-qa-suite:
Component(RADOS):
Pull request ID:
Crash signature (v1):
Crash signature (v2):

Description

Somehow v12.2.8 let me define an upmap like this:

pg_upmap_items 75.1ef [643,1100,625,907,647,1100]

and this leads to a crash in calc_pg_upmaps:

(gdb) up
Python Exception <type 'exceptions.ValueError'> Cannot find type const std::set<long, std::less<long>, std::allocator<long> >::_Rep_type:
#8  OSDMap::calc_pg_upmaps (this=0x562210187880, cct=0x562209faa1c0, max_deviation_ratio=0.00999999978, max=9,
    only_pools_orig=std::set with 1 elements, pending_inc=0x56221279d000) at /usr/src/debug/ceph-12.2.8/src/osd/OSDMap.cc:4126
4126                  tmp.pg_upmap_items.erase(p);
(gdb) list
4121            if (p != tmp.pg_upmap_items.end()) {
4122              for (auto q : p->second) {
4123                if (q.second == osd) {
4124                  ldout(cct, 10) << "  dropping pg_upmap_items " << pg
4125                                 << " " << p->second << dendl;
4126                  tmp.pg_upmap_items.erase(p);
4127                  pending_inc->old_pg_upmap_items.insert(pg);
4128                  ++num_changed;
4129                  restart = true;
4130                }
(gdb) p pg
$1 = {m_pool = 75, m_seed = 495, m_preferred = -1, static calc_name_buf_size = 36 '$'}
(gdb) p p
$2 = {first = {m_pool = 8675468274861041776, m_seed = 1382639220, m_preferred = 863261515, static calc_name_buf_size = 36 '$'},
  second = std::vector of length 163398857340263679, capacity -747910334070635646 = {<error reading variable>

We should filter out upmaps which define the same osd more than once either in the from set or the to set.

History

#1 Updated by Sebastian Wagner almost 5 years ago

  • Project changed from mgr to RADOS
  • Category deleted (ceph-mgr)

Also available in: Atom PDF