Hi, all
    
    rgw crash on thread notif-worker0 when using rgw persistent notification 
function in ceph version: v16.2.13. I haven't find root cause. 

Backtrace:
        
0> 2025-05-13T13:36:45.435+0000 7f0813c64700 -1 *** Caught signal (Aborted) **
in thread 7f0813c64700 thread_name:notif-worker0

 1: /lib64/libpthread.so.0(+0x12cf0) [0x7f084607acf0]
 2: gsignal()
 3: abort()
 4: /lib64/libstdc++.so.6(+0x9009b) [0x7f084506809b]
 5: /lib64/libstdc++.so.6(+0x9654c) [0x7f084506e54c]
 6: /lib64/libstdc++.so.6(+0x965a7) [0x7f084506e5a7]
 7: /lib64/libstdc++.so.6(+0x96808) [0x7f084506e808]
 8: (rgw::notify::Manager::Manager(ceph::common::CephContext*, unsigned int, 
unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned 
int, unsigned int, rgw::sal::RGWRadosStore*)::{lambda()#2}::operator()() 
const+0x240) [0x7f0852c176c0]
 9: /lib64/libstdc++.so.6(+0xc2b23) [0x7f084509ab23]
 10: /lib64/libpthread.so.0(+0x81ca) [0x7f08460701ca]
 11: clone()
 NOTE: a copy of the executable, or `objdump -rdS <executable>` is needed to 
interpret this.
        
===================
Above coredump info had no symbol info , so I compile same version with 
debuginfo. However, there are differen coredump info:

gdb) bt
#0  0x00007fd4edc6dacf in raise () from /lib64/libc.so.6
#1  0x00007fd4edc40ea5 in abort () from /lib64/libc.so.6
#2  0x00007fd4edc40d79 in __assert_fail_base.cold.0 () from /lib64/libc.so.6
#3  0x00007fd4edc66426 in __assert_fail () from /lib64/libc.so.6
#4  0x00007fd4fb81d7cd in 
boost::context::basic_protected_fixedsize_stack<boost::context::stack_traits>::allocate()
 () from /lib64/libradosgw.so.2
#5  0x00007fd4fbe8491b in 
spawn::detail::spawn_helper<boost::asio::executor_binder<void (*)(), 
boost::asio::strand<boost::asio::io_context::executor_type> >, 
rgw::notify::Manager::process_queue(std::__cxx11::basic_string<char, 
std::char_traits<char>, std::allocator<char> > const&, 
spawn::basic_yield_context<boost::asio::executor_binder<void (*)(), 
boost::asio::strand<boost::asio::io_context::executor_type> > 
>)::{lambda(spawn::basic_yield_context<boost::asio::executor_binder<void (*)(), 
boost::asio::strand<boost::asio::io_context::executor_type> > >)#7}, 
boost::context::basic_protected_fixedsize_stack<boost::context::stack_traits> > 
boost::context::callcc<boost::context::basic_protected_fixedsize_stack<boost::context::stack_traits>,
 spawn::detail::spawn_helper<boost::asio::executor_binder<void (*)(), 
boost::asio::strand<boost::asio::io_context::executor_type> >, 
rgw::notify::Manager::process_queue(std::__cxx11::basic_string<char, 
std::char_traits<char>, std::allocator<char> > const&,
  spawn::basic_yield_context<boost::asio::executor_binder<void (*)(), 
boost::asio::strand<boost::asio::io_context::executor_type> > 
>)::{lambda(spawn::basic_yield_context<boost::asio::executor_binder<void (*)(), 
boost::asio::strand<boost::asio::io_context::executor_type> > >)#7}, 
boost::context::basic_protected_fixedsize_stack<boost::context::stack_traits> 
>::operator()()::{lambda(boost::context::continuation&&)#1}>(std::allocator_arg_t,
 
boost::context::basic_protected_fixedsize_stack<boost::context::stack_traits>&&,
 spawn::detail::spawn_helper<boost::asio::executor_binder<void (*)(), 
boost::asio::strand<boost::asio::io_context::executor_type> >, 
rgw::notify::Manager::process_queue(std::__cxx11::basic_string<char, 
std::char_traits<char>, std::allocator<char> > const&, 
spawn::basic_yield_context<boost::asio::executor_binder<void (*)(), 
boost::asio::strand<boost::asio::io_context::executor_type> > 
>)::{lambda(spawn::basic_yield_context<boost::asio::executor_binder<void (*)(), 
boost::as
 io::strand<boost::asio::io_context::executor_type> > >)#7}, 
boost::context::basic_protected_fixedsize_stack<boost::context::stack_traits> 
>::operator()()::{lambda(boost::context::continuation&&)#1}&&) () from 
/lib64/libradosgw.so.2
#6  0x00007fd4fbe8554f in 
spawn::detail::spawn_helper<boost::asio::executor_binder<void (*)(), 
boost::asio::strand<boost::asio::io_context::executor_type> >, 
rgw::notify::Manager::process_queue(std::__cxx11::basic_string<char, 
std::char_traits<char>, std::allocator<char> > const&, 
spawn::basic_yield_context<boost::asio::executor_binder<void (*)(), 
boost::asio::strand<boost::asio::io_context::executor_type> > 
>)::{lambda(spawn::basic_yield_context<boost::asio::executor_binder<void (*)(), 
boost::asio::strand<boost::asio::io_context::executor_type> > >)#7}, 
boost::context::basic_protected_fixedsize_stack<rgw::notify::Manager::process_queue(std::__cxx11::basic_string<char,
 std::char_traits<char>, std::allocator<char> > const&, 
spawn::basic_yield_context<boost::asio::executor_binder<void (*)(), 
boost::asio::strand<boost::asio::io_context::executor_type> > 
>)::{lambda(spawn::basic_yield_context<boost::asio::executor_binder<void (*)(), 
boost::asio::strand<boost::asio::io_context::executor_t
 ype> > >)#7}::stack_traits> >::operator()() () from /lib64/libradosgw.so.2
#7  0x00007fd4fbe85999 in void 
boost::asio::detail::strand_executor_service::dispatch<boost::asio::io_context::executor_type
 const, spawn::detail::spawn_helper<boost::asio::executor_binder<void (*)(), 
boost::asio::strand<boost::asio::io_context::executor_type> >, 
rgw::notify::Manager::process_queue(std::__cxx11::basic_string<char, 
std::char_traits<char>, std::allocator<char> > const&, 
spawn::basic_yield_context<boost::asio::executor_binder<void (*)(), 
boost::asio::strand<boost::asio::io_context::executor_type> > 
>)::{lambda(spawn::basic_yield_context<boost::asio::executor_binder<void (*)(), 
boost::asio::strand<boost::asio::io_context::executor_type> > >)#7}, 
boost::context::basic_protected_fixedsize_stack<rgw::notify::Manager::process_queue(std::__cxx11::basic_string<char,
 std::char_traits<char>, std::allocator<char> > const&, 
spawn::basic_yield_context<boost::asio::executor_binder<void (*)(), 
boost::asio::strand<boost::asio::io_context::executor_type> > 
>)::{lambda(spawn::basic_yiel
 d_context<boost::asio::executor_binder<void (*)(), 
boost::asio::strand<boost::asio::io_context::executor_type> > 
>)#7}::stack_traits> >&, std::allocator<void> 
>(std::shared_ptr<boost::asio::detail::strand_executor_service::strand_impl> 
const&, boost::asio::io_context::executor_type const&, 
spawn::detail::spawn_helper<boost::asio::executor_binder<void (*)(), 
boost::asio::strand<boost::asio::io_context::executor_type> >, 
rgw::notify::Manager::process_queue(std::__cxx11::basic_string<char, 
std::char_traits<char>, std::allocator<char> > const&, 
spawn::basic_yield_context<boost::asio::executor_binder<void (*)(), 
boost::asio::strand<boost::asio::io_context::executor_type> > 
>)::{lambda(spawn::basic_yield_context<boost::asio::executor_binder<void (*)(), 
boost::asio::strand<boost::asio::io_context::executor_type> > >)#7}, 
boost::context::basic_protected_fixedsize_stack<rgw::notify::Manager::process_queue(std::__cxx11::basic_string<char,
 std::char_traits<char>, std::allocator<char> > const&,
  spawn::basic_yield_context<boost::asio::executor_binder<void (*)(), 
boost::asio::strand<boost::asio::io_context::executor_type> > 
>)::{lambda(spawn::basic_yield_context<boost::asio::executor_binder<void (*)(), 
boost::asio::strand<boost::asio::io_context::executor_type> > 
>)#7}::stack_traits> >&, std::allocator<void> const&) () from 
/lib64/libradosgw.so.2
#8  0x00007fd4fbe85c55 in 
std::enable_if<spawn::detail::is_stack_allocator<std::decay<boost::context::basic_protected_fixedsize_stack<rgw::notify::Manager::process_queue(std::__cxx11::basic_string<char,
 std::char_traits<char>, std::allocator<char> > const&, 
spawn::basic_yield_context<boost::asio::executor_binder<void (*)(), 
boost::asio::strand<boost::asio::io_context::executor_type> > 
>)::{lambda(spawn::basic_yield_context<boost::asio::executor_binder<void (*)(), 
boost::asio::strand<boost::asio::io_context::executor_type> > 
>)#7}::stack_traits> >::type, void>::value, void>::type 
spawn::spawn<boost::asio::executor_binder<void (*)(), 
boost::asio::strand<boost::asio::io_context::executor_type> >, 
rgw::notify::Manager::process_queue(std::__cxx11::basic_string<char, 
std::char_traits<char>, std::allocator<char> > const&, 
spawn::basic_yield_context<boost::asio::executor_binder<void (*)(), 
boost::asio::strand<boost::asio::io_context::executor_type> > 
>)::{lambda(spawn::basic_yield_context<bo
 ost::asio::executor_binder<void (*)(), 
boost::asio::strand<boost::asio::io_context::executor_type> > >)#7}, 
boost::context::basic_protected_fixedsize_stack<rgw::notify::Manager::process_queue(std::__cxx11::basic_string<char,
 std::char_traits<char>, std::allocator<char> > const&, 
spawn::basic_yield_context<boost::asio::executor_binder<void (*)(), 
boost::asio::strand<boost::asio::io_context::executor_type> > 
>)::{lambda(spawn::basic_yield_context<boost::asio::executor_binder<void (*)(), 
boost::asio::strand<boost::asio::io_context::executor_type> > 
>)#7}::stack_traits> 
>(spawn::basic_yield_context<boost::asio::executor_binder<void (*)(), 
boost::asio::strand<boost::asio::io_context::executor_type> > >, 
rgw::notify::Manager::process_queue(std::__cxx11::basic_string<char, 
std::char_traits<char>, std::allocator<char> > const&, 
spawn::basic_yield_context<boost::asio::executor_binder<void (*)(), 
boost::asio::strand<boost::asio::io_context::executor_type> > 
>)::{lambda(spawn::basic_yield_cont
 ext<boost::asio::executor_binder<void (*)(), 
boost::asio::strand<boost::asio::io_context::executor_type> > >)#7}&&, 
std::decay&&) () from /lib64/libradosgw.so.2
#9  0x00007fd4fbe888fe in 
rgw::notify::Manager::process_queue(std::__cxx11::basic_string<char, 
std::char_traits<char>, std::allocator<char> > const&, 
spawn::basic_yield_context<boost::asio::executor_binder<void (*)(), 
boost::asio::strand<boost::asio::io_context::executor_type> > >) () from 
/lib64/libradosgw.so.2
#10 0x00007fd4fbe8c711 in 
rgw::notify::Manager::process_queues(spawn::basic_yield_context<boost::asio::executor_binder<void
 (*)(), boost::asio::strand<boost::asio::io_context::executor_type> > 
>)::{lambda(spawn::basic_yield_context<boost::asio::executor_binder<void (*)(), 
boost::asio::strand<boost::asio::io_context::executor_type> > 
>)#6}::operator()(spawn::basic_yield_context<boost::asio::executor_binder<void 
(*)(), boost::asio::strand<boost::asio::io_context::executor_type> > >) const 
() from /lib64/libradosgw.so.2
#11 0x00007fd4fbe8cab4 in 
spawn::detail::spawn_helper<boost::asio::executor_binder<void (*)(), 
boost::asio::strand<boost::asio::io_context::executor_type> >, 
rgw::notify::Manager::process_queues(spawn::basic_yield_context<boost::asio::executor_binder<void
 (*)(), boost::asio::strand<boost::asio::io_context::executor_type> > 
>)::{lambda(spawn::basic_yield_context<boost::asio::executor_binder<void (*)(), 
boost::asio::strand<boost::asio::io_context::executor_type> > >)#6}, 
boost::context::basic_protected_fixedsize_stack<rgw::notify::Manager::process_queues(spawn::basic_yield_context<boost::asio::executor_binder<void
 (*)(), boost::asio::strand<boost::asio::io_context::executor_type> > 
>)::{lambda(spawn::basic_yield_context<boost::asio::executor_binder<void (*)(), 
boost::asio::strand<boost::asio::io_context::executor_type> > 
>)#6}::stack_traits> 
>::operator()()::{lambda(rgw::notify::Manager::process_queues(spawn::basic_yield_context<boost::asio::executor_binder<void
 (*)(), boost::asio::str
 and<boost::asio::io_context::executor_type> > 
>)::{lambda(spawn::basic_yield_context<boost::asio::executor_binder<void (*)(), 
boost::asio::strand<boost::asio::io_context::executor_type> > 
>)#6}::continuation&&)#1}::operator()(rgw::notify::Manager::process_queues(spawn::basic_yield_context<boost::asio::executor_binder<void
 (*)(), boost::asio::strand<boost::asio::io_context::executor_type> > 
>)::{lambda(spawn::basic_yield_context<boost::asio::executor_binder<void (*)(), 
boost::asio::strand<boost::asio::io_context::executor_type> > 
>)#6}::continuation) const () from /lib64/libradosgw.so.2
#12 0x00007fd4fbe8cc90 in 
boost::context::detail::record<boost::context::continuation, 
boost::context::basic_protected_fixedsize_stack<boost::context::stack_traits>, 
spawn::detail::spawn_helper<boost::asio::executor_binder<void (*)(), 
boost::asio::strand<boost::asio::io_context::executor_type> >, 
rgw::notify::Manager::process_queues(spawn::basic_yield_context<boost::asio::executor_binder<void
 (*)(), boost::asio::strand<boost::asio::io_context::executor_type> > 
>)::{lambda(spawn::basic_yield_context<boost::asio::executor_binder<void (*)(), 
boost::asio::strand<boost::asio::io_context::executor_type> > >)#6}, 
boost::context::basic_protected_fixedsize_stack<boost::context::stack_traits> 
>::operator()()::{lambda(boost::context::continuation&&)#1}>::run(void*) () 
from /lib64/libradosgw.so.2
#13 0x00007fd4fbe8cd58 in void 
boost::context::detail::context_entry<boost::context::detail::record<boost::context::continuation,
 boost::context::basic_protected_fixedsize_stack<boost::context::stack_traits>, 
spawn::detail::spawn_helper<boost::asio::executor_binder<void (*)(), 
boost::asio::strand<boost::asio::io_context::executor_type> >, 
rgw::notify::Manager::process_queues(spawn::basic_yield_context<boost::asio::executor_binder<void
 (*)(), boost::asio::strand<boost::asio::io_context::executor_type> > 
>)::{lambda(spawn::basic_yield_c--Type <RET> for more, q to quit, c to continue 
without paging--  
ontext<boost::asio::executor_binder<void (*)(), 
boost::asio::strand<boost::asio::io_context::executor_type> > >)#6}, 
boost::context::basic_protected_fixedsize_stack<boost::context::stack_traits> 
>::operator()()::{lambda(boost::context::continuation&&)#1}> 
>(boost::context::detail::transfer_t) () from /lib64/libradosgw.so.2
#14 0x00007fd4fbf5e94f in make_fcontext () from /lib64/libradosgw.so.2
#15 0x0000000000000000 in ?? ()

I have found a similar issue in https://github.com/ceph/ceph/pull/39521, but it 
haven't reslove it.
_______________________________________________
ceph-users mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to