socket.io-client-cpp icon indicating copy to clipboard operation
socket.io-client-cpp copied to clipboard

Data race in sio_client_impl.cpp

Open dfaure-kdab opened this issue 1 year ago • 0 comments

The class client_impl creates a secondary thread called m_network_thread which runs run_loop(). From run_loop(), the callbacks such as on_close() are being called. on_close() has code such as m_con_state = con_closed; which is a data race with all the accesses to m_con_state from the main thread, such as if(m_con_state == con_closing||m_con_state == con_closed) in client_impl::connect. This needs mutex protection, or usage of an atomic.

This makes me wonder how many other member variables are victims of data races in this class....

dfaure-kdab avatar Apr 05 '23 08:04 dfaure-kdab