v6d
v6d copied to clipboard
Vineyardd will crashed when reset the etcd client
Describe your problem
In instanceUpdate, we will reset the etcd client. At the same time, the other thread have started a lock pplx task with the previous etcd client. Then, the vineyardd will crash with the following log.
││ __cxxabiv1::__terminate(void (*)()) + 0x6 ││ std::terminate() + 0x11 ││ pplx::details::_ExceptionHolder::~_ExceptionHolder() + 0x18 ││ std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count() + 0x38 ││ std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count() + 0x38 │
│ vineyard::EtcdMetaService::UpdateEndpoint() + 0xD22 │
│ pplx::details::_TaskProcHandle::_RunChoreBridge(void*) + 0x1F │
│ boost::asio::detail::completion_handler<boost::_bi::bind_t<void, void (*)(void*), boost::_bi::li │
│ boost::asio::detail::scheduler::do_run_one(boost::asio::detail::conditionally_enabled_mutex::sco │
│ boost::asio::detail::scheduler::run(boost::system::error_code&) + 0xD5 │
│ crossplat::threadpool::initialize_with_threads(unsigned long) + 0x132 │
│ boost_asio_detail_posix_thread_function + 0x17 │
│ pthread_condattr_setpshared + 0x4D4 │
│ __xmknodat + 0x23C