On network fault which results in an exception thrown and you call the destructor of sleepy discord. Sleepy Discord will illegally access memory from another third party lib.
As soon as an exception is called it calls WebsocketppDiscordClient::~WebsocketppDiscordClient() which calls BaseDiscordClient::~BaseDiscordClient() which calls SleepyDiscord::Timer::stop() which calls implStop(); which calls WebsocketppDiscordClient::schedule -> timer->cancel();
template <typename Time_Traits>
std::size_t win_iocp_io_context::cancel_timer(timer_queue<Time_Traits>& queue,
typename timer_queue<Time_Traits>::per_timer_data& timer,
std::size_t max_cancelled)
{
// If the service has been shut down we silently ignore the cancellation.
if (::InterlockedExchangeAdd(&shutdown_, 0) != 0)
return 0;
mutex::scoped_lock lock(dispatch_mutex_);
op_queue<win_iocp_operation> ops;
std::size_t n = queue.cancel_timer(timer, ops, max_cancelled);
post_deferred_completions(ops);
return n;
}
Which causes an memory violation.
TIPBOT.exe!asio::detail::win_iocp_io_context::cancel_timer<asio::detail::chrono_time_traits<std::chrono::steady_clock,asio::wait_traits<std::chrono::steady_clock> > >(asio::detail::timer_queue<asio::detail::chrono_time_traits<std::chrono::steady_clock,asio::wait_traits<std::chrono::steady_clock> > > & queue, asio::detail::timer_queue<asio::detail::chrono_time_traits<std::chrono::steady_clock,asio::wait_traits<std::chrono::steady_clock> > >::per_timer_data & timer, unsigned int max_cancelled) Line 73 C++ Symbols loaded.
TIPBOT.exe!asio::detail::deadline_timer_service<asio::detail::chrono_time_traits<std::chrono::steady_clock,asio::wait_traits<std::chrono::steady_clock> > >::cancel(asio::detail::deadline_timer_service<asio::detail::chrono_time_traits<std::chrono::steady_clock,asio::wait_traits<std::chrono::steady_clock> > >::implementation_type & impl, std::error_code & ec) Line 143 C++ Symbols loaded.
TIPBOT.exe!asio::basic_waitable_timer<std::chrono::steady_clock,asio::wait_traits<std::chrono::steady_clock> >::cancel() Line 328 C++ Symbols loaded.
TIPBOT.exe!SleepyDiscord::WebsocketppDiscordClient::schedule::__l2::<lambda>() Line 69 C++ Symbols loaded.
[External Code] Annotated Frame
TIPBOT.exe!SleepyDiscord::Timer::stop() Line 40 C++ Symbols loaded.
TIPBOT.exe!SleepyDiscord::BaseDiscordClient::~BaseDiscordClient() Line 38 C++ Symbols loaded.
TIPBOT.exe!SleepyDiscord::WebsocketppDiscordClient::~WebsocketppDiscordClient() Line 16 C++ Symbols loaded.
[External Code] Annotated Frame
TIPBOT.exe!websocketpp::endpoint<websocketpp::connection<websocketpp::config::asio_tls_client>,websocketpp::config::asio_tls_client>::send(std::weak_ptr<void> hdl, const std::basic_string<char,std::char_traits<char>,std::allocator<char> > & payload, websocketpp::frame::opcode::value op) Line 178 C++ Symbols loaded.
TIPBOT.exe!SleepyDiscord::WebsocketppDiscordClient::send(std::basic_string<char,std::char_traits<char>,std::allocator<char> > message) Line 78 C++ Symbols loaded.
TIPBOT.exe!SleepyDiscord::BaseDiscordClient::sendL(std::basic_string<char,std::char_traits<char>,std::allocator<char> > message) Line 325 C++ Symbols loaded.
TIPBOT.exe!SleepyDiscord::BaseDiscordClient::sendHeartbeat() Line 441 C++ Symbols loaded.
TIPBOT.exe!SleepyDiscord::BaseDiscordClient::heartbeat() Line 436 C++ Symbols loaded.
[External Code] Annotated Frame
TIPBOT.exe!SleepyDiscord::handleTimers(const std::error_code & ec, std::function<void __cdecl(void)> & code) Line 60 C++ Symbols loaded.
[External Code] Annotated Frame
TIPBOT.exe!websocketpp::transport::asio::endpoint<websocketpp::config::asio_tls_client::transport_config>::handle_timer(std::shared_ptr<asio::basic_waitable_timer<std::chrono::steady_clock,asio::wait_traits<std::chrono::steady_clock> > > __formal, std::function<void __cdecl(std::error_code const &)> callback, const std::error_code & ec) Line 735 C++ Symbols loaded.
[External Code] Annotated Frame
TIPBOT.exe!asio::detail::binder1<std::_Binder<std::_Unforced,void (__thiscall websocketpp::transport::asio::endpoint<websocketpp::config::asio_tls_client::transport_config>::*)(std::shared_ptr<asio::basic_waitable_timer<std::chrono::steady_clock,asio::wait_traits<std::chrono::steady_clock> > >,std::function<void __cdecl(std::error_code const &)>,std::error_code const &),websocketpp::transport::asio::endpoint<websocketpp::config::asio_tls_client::transport_config> *,std::shared_ptr<asio::basic_waitable_timer<std::chrono::steady_clock,asio::wait_traits<std::chrono::steady_clock> > > &,std::function<void __cdecl(std::error_code const &)> &,std::_Ph<1> const &>,std::error_code>::operator()() Line 65 C++ Symbols loaded.
TIPBOT.exe!asio::asio_handler_invoke<asio::detail::binder1<std::_Binder<std::_Unforced,void (__thiscall websocketpp::transport::asio::endpoint<websocketpp::config::asio_tls_client::transport_config>::*)(std::shared_ptr<asio::basic_waitable_timer<std::chrono::steady_clock,asio::wait_traits<std::chrono::steady_clock> > >,std::function<void __cdecl(std::error_code const &)>,std::error_code const &),websocketpp::transport::asio::endpoint<websocketpp::config::asio_tls_client::transport_config> *,std::shared_ptr<asio::basic_waitable_timer<std::chrono::steady_clock,asio::wait_traits<std::chrono::steady_clock> > > &,std::function<void __cdecl(std::error_code const &)> &,std::_Ph<1> const &>,std::error_code> >(asio::detail::binder1<std::_Binder<std::_Unforced,void (__thiscall websocketpp::transport::asio::endpoint<websocketpp::config::asio_tls_client::transport_config>::*)(std::shared_ptr<asio::basic_waitable_timer<std::chrono::steady_clock,asio::wait_traits<std::chrono::steady_clock> > >,std::function<void __cdecl(std::error_code const &)>,std::error_code const &),websocketpp::transport::asio::endpoint<websocketpp::config::asio_tls_client::transport_config> *,std::shared_ptr<asio::basic_waitable_timer<std::chrono::steady_clock,asio::wait_traits<std::chrono::steady_clock> > > &,std::function<void __cdecl(std::error_code const &)> &,std::_Ph<1> const &>,std::error_code> & function, ...) Line 69 C++ Symbols loaded.
TIPBOT.exe!asio_handler_invoke_helpers::invoke<asio::detail::binder1<std::_Binder<std::_Unforced,void (__thiscall websocketpp::transport::asio::endpoint<websocketpp::config::asio_tls_client::transport_config>::*)(std::shared_ptr<asio::basic_waitable_timer<std::chrono::steady_clock,asio::wait_traits<std::chrono::steady_clock> > >,std::function<void __cdecl(std::error_code const &)>,std::error_code const &),websocketpp::transport::asio::endpoint<websocketpp::config::asio_tls_client::transport_config> *,std::shared_ptr<asio::basic_waitable_timer<std::chrono::steady_clock,asio::wait_traits<std::chrono::steady_clock> > > &,std::function<void __cdecl(std::error_code const &)> &,std::_Ph<1> const &>,std::error_code>,std::_Binder<std::_Unforced,void (__thiscall websocketpp::transport::asio::endpoint<websocketpp::config::asio_tls_client::transport_config>::*)(std::shared_ptr<asio::basic_waitable_timer<std::chrono::steady_clock,asio::wait_traits<std::chrono::steady_clock> > >,std::function<void __cdecl(std::error_code const &)>,std::error_code const &),websocketpp::transport::asio::endpoint<websocketpp::config::asio_tls_client::transport_config> *,std::shared_ptr<asio::basic_waitable_timer<std::chrono::steady_clock,asio::wait_traits<std::chrono::steady_clock> > > &,std::function<void __cdecl(std::error_code const &)> &,std::_Ph<1> const &> >(asio::detail::binder1<std::_Binder<std::_Unforced,void (__thiscall websocketpp::transport::asio::endpoint<websocketpp::config::asio_tls_client::transport_config>::*)(std::shared_ptr<asio::basic_waitable_timer<std::chrono::steady_clock,asio::wait_traits<std::chrono::steady_clock> > >,std::function<void __cdecl(std::error_code const &)>,std::error_code const &),websocketpp::transport::asio::endpoint<websocketpp::config::asio_tls_client::transport_config> *,std::shared_ptr<asio::basic_waitable_timer<std::chrono::steady_clock,asio::wait_traits<std::chrono::steady_clock> > > &,std::function<void __cdecl(std::error_code const &)> &,std::_Ph<1> const &>,std::error_code> & function, std::_Binder<std::_Unforced,void (__thiscall websocketpp::transport::asio::endpoint<websocketpp::config::asio_tls_client::transport_config>::*)(std::shared_ptr<asio::basic_waitable_timer<std::chrono::steady_clock,asio::wait_traits<std::chrono::steady_clock> > >,std::function<void __cdecl(std::error_code const &)>,std::error_code const &),websocketpp::transport::asio::endpoint<websocketpp::config::asio_tls_client::transport_config> *,std::shared_ptr<asio::basic_waitable_timer<std::chrono::steady_clock,asio::wait_traits<std::chrono::steady_clock> > > &,std::function<void __cdecl(std::error_code const &)> &,std::_Ph<1> const &> & context) Line 37 C++ Symbols loaded.
TIPBOT.exe!asio::detail::handler_work<std::_Binder<std::_Unforced,void (__thiscall websocketpp::transport::asio::endpoint<websocketpp::config::asio_tls_client::transport_config>::*)(std::shared_ptr<asio::basic_waitable_timer<std::chrono::steady_clock,asio::wait_traits<std::chrono::steady_clock> > >,std::function<void __cdecl(std::error_code const &)>,std::error_code const &),websocketpp::transport::asio::endpoint<websocketpp::config::asio_tls_client::transport_config> *,std::shared_ptr<asio::basic_waitable_timer<std::chrono::steady_clock,asio::wait_traits<std::chrono::steady_clock> > > &,std::function<void __cdecl(std::error_code const &)> &,std::_Ph<1> const &>,asio::system_executor>::complete<asio::detail::binder1<std::_Binder<std::_Unforced,void (__thiscall websocketpp::transport::asio::endpoint<websocketpp::config::asio_tls_client::transport_config>::*)(std::shared_ptr<asio::basic_waitable_timer<std::chrono::steady_clock,asio::wait_traits<std::chrono::steady_clock> > >,std::function<void __cdecl(std::error_code const &)>,std::error_code const &),websocketpp::transport::asio::endpoint<websocketpp::config::asio_tls_client::transport_config> *,std::shared_ptr<asio::basic_waitable_timer<std::chrono::steady_clock,asio::wait_traits<std::chrono::steady_clock> > > &,std::function<void __cdecl(std::error_code const &)> &,std::_Ph<1> const &>,std::error_code> >(asio::detail::binder1<std::_Binder<std::_Unforced,void (__thiscall websocketpp::transport::asio::endpoint<websocketpp::config::asio_tls_client::transport_config>::*)(std::shared_ptr<asio::basic_waitable_timer<std::chrono::steady_clock,asio::wait_traits<std::chrono::steady_clock> > >,std::function<void __cdecl(std::error_code const &)>,std::error_code const &),websocketpp::transport::asio::endpoint<websocketpp::config::asio_tls_client::transport_config> *,std::shared_ptr<asio::basic_waitable_timer<std::chrono::steady_clock,asio::wait_traits<std::chrono::steady_clock> > > &,std::function<void __cdecl(std::error_code const &)> &,std::_Ph<1> const &>,std::error_code> & function, std::_Binder<std::_Unforced,void (__thiscall websocketpp::transport::asio::endpoint<websocketpp::config::asio_tls_client::transport_config>::*)(std::shared_ptr<asio::basic_waitable_timer<std::chrono::steady_clock,asio::wait_traits<std::chrono::steady_clock> > >,std::function<void __cdecl(std::error_code const &)>,std::error_code const &),websocketpp::transport::asio::endpoint<websocketpp::config::asio_tls_client::transport_config> *,std::shared_ptr<asio::basic_waitable_timer<std::chrono::steady_clock,asio::wait_traits<std::chrono::steady_clock> > > &,std::function<void __cdecl(std::error_code const &)> &,std::_Ph<1> const &> & handler) Line 81 C++ Symbols loaded.
TIPBOT.exe!asio::detail::wait_handler<std::_Binder<std::_Unforced,void (__thiscall websocketpp::transport::asio::endpoint<websocketpp::config::asio_tls_client::transport_config>::*)(std::shared_ptr<asio::basic_waitable_timer<std::chrono::steady_clock,asio::wait_traits<std::chrono::steady_clock> > >,std::function<void __cdecl(std::error_code const &)>,std::error_code const &),websocketpp::transport::asio::endpoint<websocketpp::config::asio_tls_client::transport_config> *,std::shared_ptr<asio::basic_waitable_timer<std::chrono::steady_clock,asio::wait_traits<std::chrono::steady_clock> > > &,std::function<void __cdecl(std::error_code const &)> &,std::_Ph<1> const &> >::do_complete(void * owner, asio::detail::win_iocp_operation * base, const std::error_code & __formal, unsigned int __formal) Line 73 C++ Symbols loaded.
TIPBOT.exe!asio::detail::win_iocp_operation::complete(void * owner, const std::error_code & ec, unsigned int bytes_transferred) Line 46 C++ Symbols loaded.
TIPBOT.exe!asio::detail::win_iocp_io_context::do_one(unsigned long msec, std::error_code & ec) Line 420 C++ Symbols loaded.
TIPBOT.exe!asio::detail::win_iocp_io_context::run(std::error_code & ec) Line 162 C++ Symbols loaded.
TIPBOT.exe!asio::io_context::run() Line 61 C++ Symbols loaded.
TIPBOT.exe!websocketpp::transport::asio::endpoint<websocketpp::config::asio_tls_client::transport_config>::run() Line 615 C++ Symbols loaded.
TIPBOT.exe!SleepyDiscord::WebsocketppDiscordClient::run() Line 55 C++ Symbols loaded.
TIPBOT.exe!main() Line 24 C++ Symbols loaded.
[External Code] Annotated Frame