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