xu chenhui wrote: > 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::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}&&) () 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_type> > > >)#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_yield_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<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> > >(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_context<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::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&&)#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.
Rgw crash was disappeared when set vm.max_map_count = 2000000. The default value 65536 of max map count of per process is limite allocation for coroutine. However, a new problem has arisen. We are using the method of pushing to an HTTP server. If the HTTP server is abnormal or the HTTP server configuration of the RGW topic is incorrect, a memory leak will occur. I haven't reslove it. Any help is very gratefully. Thanks _______________________________________________ ceph-users mailing list -- ceph-users@ceph.io To unsubscribe send an email to ceph-users-le...@ceph.io