diff options
author | Shauren <shauren.trinity@gmail.com> | 2015-04-19 15:30:24 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2015-04-19 15:30:24 +0200 |
commit | bfca8246d84cdb529a4b326e0a5ab8901e1af276 (patch) | |
tree | beddaee432b8e02e00b5def8886c6901b3e8d296 /src/server/shared/Updater/DBUpdater.cpp | |
parent | 22ea8cf4d05deeddfab20a65a8bc0578e1ea900c (diff) |
Core/Socket: Fixed race conditions with instance socket
Helgrind logs:
==41785== Possible data race during write of size 8 at 0x6D80D590 by thread #4
==41785== Locks held: none
==41785== at 0x19603A2: void std::swap<std::__future_base::_State_baseV2*>(std::__future_base::_State_baseV2*&, std::__future_base::_State_baseV2*&) (move.h:177)
==41785== by 0x195FD7C: std::__shared_ptr<std::__future_base::_State_baseV2, (__gnu_cxx::_Lock_policy)2>::swap(std::__shared_ptr<std::__future_base::_State_baseV2, (__gnu_cxx::_Lock_policy)2>&) (shared_ptr_base.h:1069)
==41785== by 0x1FC5B84: std::__basic_future<SQLQueryHolder*>::_M_swap(std::__basic_future<SQLQueryHolder*>&) (future:629)
==41785== by 0x1FC5155: std::future<SQLQueryHolder*>::operator=(std::future<SQLQueryHolder*>&&) (future:691)
==41785== by 0x1FB94C6: WorldSession::HandleContinuePlayerLogin() (CharacterHandler.cpp:832)
==41785== by 0x1ABD31A: WorldSocket::HandleAuthContinuedSession(WorldPackets::Auth::AuthContinuedSession&) (WorldSocket.cpp:742)
==41785== by 0x1AB8322: WorldSocket::ReadDataHandler() (WorldSocket.cpp:261)
==41785== by 0x1AB77D1: WorldSocket::ReadHandler() (WorldSocket.cpp:157)
==41785== by 0x1AC068A: Socket<WorldSocket>::ReadHandlerInternal(boost::system::error_code, unsigned long) (Socket.h:201)
==41785== by 0x1AC39ED: void std::_Mem_fn<void (Socket<WorldSocket>::*)(boost::system::error_code, unsigned long)>::_M_call<std::shared_ptr<WorldSocket>&, boost::system::error_code const&, unsigned long const&>(std::shared_ptr<WorldSocket>&, void const volatile*, boost::system::error_code const&, unsigned long const&) const (in /usr/local/bin/worldserver)
==41785== by 0x1AC393F: void std::_Mem_fn<void (Socket<WorldSocket>::*)(boost::system::error_code, unsigned long)>::operator()<std::shared_ptr<WorldSocket>&, boost::system::error_code const&, unsigned long const&, void>(std::shared_ptr<WorldSocket>&, boost::system::error_code const&, unsigned long const&) const (functional:578)
==41785== by 0x1AC370F: void std::_Bind<std::_Mem_fn<void (Socket<WorldSocket>::*)(boost::system::error_code, unsigned long)> (std::shared_ptr<WorldSocket>, std::_Placeholder<1>, std::_Placeholder<2>)>::__call<void, boost::system::error_code const&, unsigned long const&, 0ul, 1ul, 2ul>(std::tuple<boost::system::error_code const&, unsigned long const&>&&, std::_Index_tuple<0ul, 1ul, 2ul>) (functional:1264)
==41785==
==41785== This conflicts with a previous read of size 8 by thread #1
==41785== Locks held: none
==41785== at 0x144BF6A: std::__shared_ptr<std::__future_base::_State_baseV2, (__gnu_cxx::_Lock_policy)2>::operator bool() const (shared_ptr_base.h:1056)
==41785== by 0x1AAF7BD: std::__basic_future<SQLQueryHolder*>::valid() const (future:590)
==41785== by 0x1AAA04C: WorldSession::ProcessQueryCallbacks() (WorldSession.cpp:1006)
==41785== by 0x1AA5167: WorldSession::Update(unsigned int, PacketFilter&) (WorldSession.cpp:452)
==41785== by 0x1D2D667: World::UpdateSessions(unsigned int) (World.cpp:2793)
==41785== by 0x1D2A8C6: World::Update(unsigned int) (World.cpp:2159)
==41785== by 0x145B823: WorldUpdateLoop() (Main.cpp:397)
==41785== by 0x145957F: main (Main.cpp:255)
==41785== Possible data race during read of size 8 at 0x6D80D638 by thread #1
==41785== Locks held: none
==41785== at 0x1A5E914: std::__shared_ptr<WorldSocket, (__gnu_cxx::_Lock_policy)2>::operator bool() const (shared_ptr_base.h:1056)
==41785== by 0x1AA52A9: WorldSession::Update(unsigned int, PacketFilter&) (WorldSession.cpp:468)
==41785== by 0x1D2D667: World::UpdateSessions(unsigned int) (World.cpp:2793)
==41785== by 0x1D2A8C6: World::Update(unsigned int) (World.cpp:2159)
==41785== by 0x145B823: WorldUpdateLoop() (Main.cpp:397)
==41785== by 0x145957F: main (Main.cpp:255)
==41785==
==41785== This conflicts with a previous write of size 8 by thread #4
==41785== Locks held: none
==41785== at 0x1AAD12D: std::__shared_ptr<WorldSocket, (__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_ptr<WorldSocket, (__gnu_cxx::_Lock_policy)2> const&) (shared_ptr_base.h:860)
==41785== by 0x1AAD174: std::shared_ptr<WorldSocket>::operator=(std::shared_ptr<WorldSocket> const&) (shared_ptr.h:93)
==41785== by 0x1ABF0B5: WorldSession::AddInstanceConnection(std::shared_ptr<WorldSocket>) (WorldSession.h:684)
==41785== by 0x1ABD2F8: WorldSocket::HandleAuthContinuedSession(WorldPackets::Auth::AuthContinuedSession&) (WorldSocket.cpp:741)
==41785== by 0x1AB8322: WorldSocket::ReadDataHandler() (WorldSocket.cpp:261)
==41785== by 0x1AB77D1: WorldSocket::ReadHandler() (WorldSocket.cpp:157)
==41785== by 0x1AC068A: Socket<WorldSocket>::ReadHandlerInternal(boost::system::error_code, unsigned long) (Socket.h:201)
==41785== by 0x1AC39ED: void std::_Mem_fn<void (Socket<WorldSocket>::*)(boost::system::error_code, unsigned long)>::_M_call<std::shared_ptr<WorldSocket>&, boost::system::error_code const&, unsigned long const&>(std::shared_ptr<WorldSocket>&, void const volatile*, boost::system::error_code const&, unsigned long const&) const (in /usr/local/bin/worldserver)
Diffstat (limited to 'src/server/shared/Updater/DBUpdater.cpp')
0 files changed, 0 insertions, 0 deletions