-
Notifications
You must be signed in to change notification settings - Fork 204
Fix regression in P2P networking caused by a data racing condition #383
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
I faced this same problem with the overlay before, the core issue is that the periodic and networking runnables always lock the And here's how it can easily deadlock: 3- Back in the main thread where Both threads are now deadlocked. The first solution is really ugly, because you have to manually trace the call order of your functions and future edits become a huge burden. The second solution is just not feasible nor practical, because a lot of the functionality will break, and also requires a ton of edits everywhere. The way I gbe_fork/overlay_experimental/steam_overlay.cpp Lines 2127 to 2143 in 8e0f2f3
A third solution, which I don't know how to implement at the moment, is to keep everything steam-related in a separate collection than the networking ones, so for example a separate |
|
Looks good to me but just bc more eye can see more |
Fixes and closes #380
Add a missing mutex lock in
P2p_Manager::send_packet()when sending a network message, this is why the game was crashing constantly atSteam_Networking::SendP2PPacket()Return true in
Steam_UGC::BInitWorkshopForGameServer()since the emu supports workshop/mods via the UGC interface.This also allows the dedicated server (appid 298740) to work out of the box without the need to patch/modify its files.