View Single Post
  #1  
Old 11-03-2016, 10:49 AM
image
Demi-God
 
Join Date: Jan 2002
Posts: 1,290
Default Deadlock in TCPConnection::ClearBuffers from FinishDisconnect

I am pretty confident my world server encountered this issue after doing a code inspection and it seems the eqemu code is still susceptible to this problem.

https://github.com/EQEmu/Server/blob...ction.cpp#L293 -> https://github.com/EQEmu/Server/blob...ction.cpp#L310 -> https://github.com/EQEmu/Server/blob...ction.cpp#L504

we double lock MState which is not possible so it becomes a deadspin/deadlock whatever you want to call it.

Need to remove the lock of MState in ClearBuffers: https://github.com/EQEmu/Server/blob...ction.cpp#L504

So far no issues in my testing, but its hard to test all disconnect paths manually so gotta let it run.
__________________
www.eq2emu.com
EQ2Emu Developer
Former EQEMu Developer / GuildWars / Zek Seasons Servers
Member of the "I hate devn00b" club.
Reply With Quote