The addresses here are not continuous, so it makes sense to look at the
full disassembled version as well (i.e. disassemble without /m):

(gdb) disassemble 
'MDSMap::decode(ceph::buffer::v15_2_0::list::iterator_impl<true>&)'
Dump of assembler code for function 
_ZN6MDSMap6decodeERN4ceph6buffer7v15_2_04list13iterator_implILb1EEE:
Address range 0x7ffff7cc2e10 to 0x7ffff7cc3c4d:
   0x00007ffff7cc2e10 <+0>:     endbr64
   0x00007ffff7cc2e14 <+4>:     push   %rbp
...
   0x00007ffff7cc3a65 <+3157>:  cmp    $0x10,%r12w
   0x00007ffff7cc3a6a <+3162>:  je     0x7ffff7cc3371 
<_ZN6MDSMap6decodeERN4ceph6buffer7v15_2_04list13iterator_implILb1EEE+1377>
   0x00007ffff7cc3a70 <+3168>:  lea    -0x2a4(%rbp),%rdx
   0x00007ffff7cc3a77 <+3175>:  mov    $0x4,%esi
   0x00007ffff7cc3a7c <+3180>:  mov    %r13,%rdi
   0x00007ffff7cc3a7f <+3183>:  lea    0x1c0(%rbx),%r14
   0x00007ffff7cc3a86 <+3190>:  call   0x7ffff7a93320 
<_ZN4ceph6buffer7v15_2_04list13iterator_implILb1EE4copyEjPc>
   0x00007ffff7cc3a8b <+3195>:  mov    0x1c0(%rbx),%rax
   0x00007ffff7cc3a92 <+3202>:  mov    -0x2a4(%rbp),%esi
   0x00007ffff7cc3a98 <+3208>:  mov    %r14,%rdx
   0x00007ffff7cc3a9b <+3211>:  mov    %r13,%rdi
   0x00007ffff7cc3a9e <+3214>:  movq   $0x0,0x1c8(%rbx)
   0x00007ffff7cc3aa9 <+3225>:  movb   $0x0,(%rax)
   0x00007ffff7cc3aac <+3228>:  call   0x7ffff7a93400 
<_ZN4ceph6buffer7v15_2_04list13iterator_implILb1EE4copyEjRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE>
   0x00007ffff7cc3ab1 <+3233>:  cmp    $0x11,%r12w
...

The function that was called just before that has signature
_ZN4ceph6buffer7v15_2_04list13iterator_implILb1EE4copyEjRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE,
which is

(gdb) demangle 
_ZN4ceph6buffer7v15_2_04list13iterator_implILb1EE4copyEjRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE
ceph::buffer::v15_2_0::list::iterator_impl<true>::copy(unsigned int, 
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> 
>&)

and it seems like it's the function that we see in the frame 9:

 9: (ceph::buffer::v15_2_0::list::iterator_impl<true>::copy(unsigned
int, std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> >&)+0x193) [0x749753093593]

so we're on the right track. The function is just after the

   0x00007ffff7cc3a65 <+3157>:  cmp    $0x10,%r12w
   0x00007ffff7cc3a6a <+3162>:  je     0x7ffff7cc3371 
<_ZN6MDSMap6decodeERN4ceph6buffer7v15_2_04list13iterator_implILb1EEE+1377>

branch, which seems like this is the if part from

 963   if (ev >= 17) {
 964     decode(bal_rank_mask, p);
 965   }

If the value equals 16 then the jump happens, otherwise decode(bal_rank_mask, 
p); is called.
bal_rank_mask is std::string, and the function has basic_string in the list of 
parameters, so it seems like we're still on the right track.

697   std::string bal_rank_mask = "-1";

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2089565

Title:
  MON and MDS crash upgrading  CEPH  on ubuntu 24.04 LTS

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/ceph/+bug/2089565/+subscriptions


-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to