[ https://issues.apache.org/jira/browse/TUBEMQ-368?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
charleli resolved TUBEMQ-368. ----------------------------- Resolution: Fixed https://github.com/apache/incubator-tubemq/pull/281 fix it > When tubemq::TubeMQConsumer shutdown() is called, there is a small > probability that it will be cored directly > ------------------------------------------------------------------------------------------------------------- > > Key: TUBEMQ-368 > URL: https://issues.apache.org/jira/browse/TUBEMQ-368 > Project: Apache TubeMQ > Issue Type: Bug > Components: Client > Environment: linux > Reporter: houjie > Assignee: charleli > Priority: Major > Labels: pull-request-available > Time Spent: 10m > Remaining Estimate: 0h > > When tubemq::TubeMQConsumer shutdown() is called, there is a small > probability that it will be cored directly. The following is the stack > information: > > {quote}#0 0x00002b939d73cc8e in __memcmp_sse4_1 () from /lib64/libc.so.6 > #1 0x00002b939ce788b3 in std::string::compare(std::string const&) const () > from /lib64/libstdc++.so.6 > #2 0x0000000000528c2e in operator< <char, std::char_traits<char>, > std::allocator<char> > (__rhs="", __lhs="") > at /usr/include/c++/4.8.2/bits/basic_string.h:2571 > #3 operator() (this=<optimized out>, __y="", __x="") at > /usr/include/c++/4.8.2/bits/stl_function.h:235 > #4 std::_Rb_tree<std::string, std::pair<std::string const, > tubemq::PartitionExt>, std::_Select1st<std::pair<std::string const, > tubemq::PartitionExt> >, std::less<std::string>, > std::allocator<std::pair<std::string const, tubemq::PartitionExt> > > >::_M_lower_bound ( > __x=0x2b93f00250f0, __y=0x2b93f0011f90, __y@entry=0x4a9d148, __k="", > this=0x4a9d140) at /usr/include/c++/4.8.2/bits/stl_tree.h:1141 > #5 0x000000000052d65a in std::_Rb_tree<std::string, std::pair<std::string > const, tubemq::PartitionExt>, std::_Select1st<std::pair<std::string const, > tubemq::PartitionExt> >, std::less<std::string>, > std::allocator<std::pair<std::string const, tubemq::PartitionExt> > >::find > (this=this@entry=0x4a9d140, __k="") at > /usr/include/c++/4.8.2/bits/stl_tree.h:1792 > #6 0x0000000000529a4d in find (__x="", this=0x4a9d140) at > /usr/include/c++/4.8.2/bits/stl_map.h:822 > Python Exception <type 'exceptions.IndexError'> list index out of range: > #7 tubemq::RmtDataCacheCsm::GetPartitionByBroker (this=this@entry=0x4a9cf90, > broker_info=..., partition_list=empty std::list) > at /root/access_platform_group/TubeMQ-Client-Cpp/src/rmt_data_cache.cc:334 > #8 0x000000000050b57d in tubemq::BaseConsumer::reSetBrokerHBTimer > (this=0x4a9cd90, broker=...) > at /root/access_platform_group/TubeMQ-Client-Cpp/src/baseconsumer.cc:1500 > #9 0x000000000050b900 in tubemq::BaseConsumer::__lambda14::operator() > (__closure=0x2b93dc030070, error=..., response_context=...) > at /root/access_platform_group/TubeMQ-Client-Cpp/src/baseconsumer.cc:801 > #10 0x000000000050be10 in std::_Function_handler<void(tubemq::ErrorCode, > const tubemq::ResponseContext&), > tubemq::BaseConsumer::processHeartBeat2Broker(tubemq::NodeInfo)::__lambda14>::_M_invoke(const > std::_Any_data &, tubemq::ErrorCode, const tubemq::ResponseContext &) ( > __functor=..., __args#0=..., __args#1=...) at > /usr/include/c++/4.8.2/functional:2071 > #11 0x0000000000538318 in operator() (__args#1=..., > __args#0=<error reading variable: access outside bounds of object referenced > via synthetic pointer>, this=0x2b93a7133810) > at /usr/include/c++/4.8.2/functional:2471 > #12 tubemq::Promise<tubemq::ResponseContext>::callbackAndNotify > (this=this@entry=0x2b93d4001670) > at /root/access_platform_group/TubeMQ-Client-Cpp/src/future.h:130 > #13 0x000000000053201d in SetValue (value=..., this=0x2b93d4001670) at > /root/access_platform_group/TubeMQ-Client-Cpp/src/future.h:102 > #14 tubemq::ClientConnection::requestCallback > (this=this@entry=0x2b93d0915898, request_id=46829, err=err@entry=0x0, > check_out=check_out@entry=0x2b93a7133930) at > /root/access_platform_group/TubeMQ-Client-Cpp/src/client_connection.cc:248 > #15 0x0000000000532531 in tubemq::ClientConnection::checkPackageDone > (this=0x2b93d0915898) > at /root/access_platform_group/TubeMQ-Client-Cpp/src/client_connection.cc:221 > #16 0x0000000000532c05 in tubemq::ClientConnection::__lambda7::operator() > (ec=..., len=<optimized out>, __closure=0x2b93a7133b10) > at /root/access_platform_group/TubeMQ-Client-Cpp/src/client_connection.cc:178 > #17 0x00000000005351d8 in operator() (this=0x2b93a7133b10) > at > /root/access_platform_group/TubeMQ-Client-Cpp/build/third_party/include/asio/detail/bind_handler.hpp:181 > #18 > asio_handler_invoke<asio::detail::binder2<tubemq::ClientConnection::asyncRead()::__lambda7, > std::error_code, long unsigned int> > ( > function=...) at > /root/access_platform_group/TubeMQ-Client-Cpp/build/third_party/include/asio/handler_invoke_hook.hpp:87 > #19 > invoke<asio::detail::binder2<tubemq::ClientConnection::asyncRead()::__lambda7, > std::error_code, long unsigned int>, > tubemq::ClientConnection::asyncRead()::__lambda7> (context=..., function=...) > at > /root/access_platform_group/TubeMQ-Client-Cpp/build/third_party/include/asio/detail/handler_invoke_helpers.hpp:54 > #20 > complete<asio::detail::binder2<tubemq::ClientConnection::asyncRead()::__lambda7, > std::error_code, long unsigned int> > ( > handler=..., function=..., this=0x2b93a7133ae0) > at > /root/access_platform_group/TubeMQ-Client-Cpp/build/third_party/include/asio/detail/handler_work.hpp:424 > #21 asio::detail::reactive_socket_recv_op<asio::mutable_buffers_1, > tubemq::ClientConnection::asyncRead()::__lambda7, > asio::execution::any_executor<asio::execution::context_as_t<asio::execution_context&>, > asio::execution::detail::blocking::never_t<0>, > asio::execution::prefer_only<asio::execution::detail::blocking::possibly_t<0> > >, > asio::execution::prefer_only<asio::execution::detail::outstanding_work::tracked_t<0> > >, > asio::execution::prefer_only<asio::execution::detail::outstanding_work::untracked_t<0> > >, > asio::execution::prefer_only<asio::execution::detail::relationship::fork_t<0> > >, > asio::execution::prefer_only<asio::execution::detail::relationship::continuation_t<0> > > > >::do_complete(void *, asio::detail::operation *, const asio::error_code > &, std::size_t) (owner=0x2b93d0026c30, base=<optimized out>) > at > /root/access_platform_group/TubeMQ-Client-Cpp/build/third_party/include/asio/detail/reactive_socket_recv_op.hpp:144 > #22 0x0000000000501c19 in complete (bytes_transferred=<optimized out>, > ec=..., owner=0x2b93d0026c30, this=<optimized out>) > at > /root/access_platform_group/TubeMQ-Client-Cpp/build/third_party/include/asio/detail/scheduler_operation.hpp:39 > #23 asio::detail::scheduler::do_run_one (this=this@entry=0x2b93d0026c30, > lock=..., this_thread=..., ec=...) > at > /root/access_platform_group/TubeMQ-Client-Cpp/build/third_party/include/asio/detail/impl/scheduler.ipp:480 > #24 0x0000000000502401 in asio::detail::scheduler::run > (this=this@entry=0x2b93d0026c30, ec=...) > at > /root/access_platform_group/TubeMQ-Client-Cpp/build/third_party/include/asio/detail/impl/scheduler.ipp:203 > #25 0x000000000051f1c9 in run (this=<optimized out>) > at > /root/access_platform_group/TubeMQ-Client-Cpp/build/third_party/include/asio/impl/io_context.ipp:62 > #26 tubemq::Executor::StartWorker (this=<optimized out>, io_context=...) > at /root/access_platform_group/TubeMQ-Client-Cpp/src/executor_pool.cc:42 > #27 0x0000000000522b42 in operator()<std::shared_ptr<asio::io_context>&, > void> (__object=<optimized out>, this=<optimized out>) > at /usr/include/c++/4.8.2/functional:601 > #28 __call<void, 0ul, 1ul> (__args=<optimized out>, this=<optimized out>) at > /usr/include/c++/4.8.2/functional:1296 > #29 operator()<, void> (this=<optimized out>) at > /usr/include/c++/4.8.2/functional:1355 > #30 _M_invoke<> (this=<optimized out>) at > /usr/include/c++/4.8.2/functional:1732 > #31 operator() (this=<optimized out>) at > /usr/include/c++/4.8.2/functional:1720 > ---Type <return> to continue, or q <return> to quit--- > #32 std::thread::_Impl<std::_Bind_simple<std::_Bind<std::_Mem_fn<void > (tubemq::Executor::*)(std::shared_ptr<asio::io_context>)> (tubemq::Executor*, > std::shared_ptr<asio::io_context>)> ()> >::_M_run() (this=<optimized out>) at > /usr/include/c++/4.8.2/thread:115 > #33 0x00002b939ce70220 in ?? () from /lib64/libstdc++.so.6 > #34 0x00002b939c0c6e25 in start_thread () from /lib64/libpthread.so.0 > #35 0x00002b939d6d435d in clone () from /lib64/libc.so.6 > {quote} -- This message was sent by Atlassian Jira (v8.3.4#803005)