Fake IP not released after game exits

Ouverte
#465 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 2 jours

Personne n'a encore pris cette issue.

Évaluation

Difficulté
4/5
Temps estimé
Plus d'une semaine
Accessibilité débutants
12/100
Type d'issue
Bug
Clarté
À clarifier
Activité
Active
Stack technique
cpp, csharp
Domaine
networking

Piste de recherche

The report describes a Steam client bug: after a Fake IP is allocated, BeginAsyncRequestFakeIP keeps failing on relaunch until Steam restarts, with the cause logged in console_log.txt. The reproduction is a C# probe in an external gist that calls SteamAPI_Init, InitRelayNetworkAccess, and GetFakeIP/BeginAsyncRequestFakeIP, and nothing in this repository's source is named as the fix location. Done would mean the repro is confirmed and the report is routed to the Steamworks team, since the code involved is in the closed-source Steam client.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

Apologies I know this repo isn't technically related to the Steam client's SDR/FakeIP networking, but I see a couple of older tickets mentioning it so this seems like the best place to post about it where someone involved with it might see it.


So after my game successfully allocates a Fake IP via GetFakeIP/BeginAsyncRequestFakeIP and then exits normally, any more re-launches of that same App ID get a k_EResultFail from BeginAsyncRequestFakeIP for as long as the Steam client is running. Steam's console_log.txt shows this error message:

src/clientdll/clientnetworkingapi.cpp (2809) : YldRequestFakeIP called again.  Not allowed!

Restarting the Steam client fixes it for one launch, so does launching another game in between.

I've reproduced this on both Windows x64 and macOS arm64, Steam client version 1793235415

Steps to reproduce it:

  1. Restart Steam
  2. Run a minimal program that calls SteamAPI_Init, InitRelayNetworkAccess, InitAuthentication, requests a fake ip via GetFakeIP/BeginAsyncRequestFakeIP and wait for the result. The first time will give you a k_EResultOK with a valid Fake IP address and port. Then exit the program if its still running.
  3. Re-run the program, but this time you'll get k_EResultFail and the line in the console_log.txt from above.
  4. From now on it will keep failing with k_EResultFail

To clear it you'll need to either restart Steam or launch any other game that goes through the SteamAPI_Init.

Here's a .NET 10 C# project using Steamworks.NET that I've reproduced the error with: https://gist.github.com/philo23/f3ebcbe8aaf14df6f49a0822f8843534

It'll write a probe.log file into bin/Debug/net10.0/ along side the dll

$ echo 480 > steamapp_id.txt

$ dotnet bin/Debug/net10.0/Probe.dll
[2026-10-31 22:49:48.331Z pid=7012] PROBE start
[2026-10-31 22:49:48.348Z pid=7012] PROBE launched by Steam=False; SteamAppId=-; SteamGameId=-
[2026-10-31 22:49:48.348Z pid=7012] PROBE cwd=/tmp/steam-fakeip-probe; args=
[S_API] SteamAPI_Init(): Loaded '/Users/redacted/Library/Application Support/Steam/Steam.AppBundle/Steam/Contents/MacOS/steamclient.dylib' OK.
Setting breakpad minidump AppID = 480
SteamInternal_SetMinidumpSteamID:  Caching Steam ID:  7656119XXXXXXXXXX [API loaded no]
[2026-10-31 22:49:48.405Z pid=7012] PROBE init=k_ESteamAPIInitResult_OK;
[2026-10-31 22:49:48.406Z pid=7012] PROBE app=480
[2026-10-31 22:49:48.410Z pid=7012] PROBE auth=k_ESteamNetworkingAvailability_Attempting
[2026-10-31 22:49:48.412Z pid=7012] PROBE initial=k_EResultNoMatch; IPv4 present=False; port present=False
[2026-10-31 22:49:48.412Z pid=7012] PROBE begin=True
[2026-10-31 22:49:48.418Z pid=7012] SDK k_ESteamNetworkingSocketsDebugOutputType_Verbose: Got cert for steamid:7656119XXXXXXXXXX from Steam
[2026-10-31 22:49:48.419Z pid=7012] SDK k_ESteamNetworkingSocketsDebugOutputType_Msg: Certificate expires in 40h18m at 1793632101 (current time 1793486987), will renew in 38h18m
[2026-10-31 22:49:48.441Z pid=7012] SDK k_ESteamNetworkingSocketsDebugOutputType_Warning: SDR network config fetch attempt #1 failed.  HTTP 504.  .  Trying again.
[2026-10-31 22:49:48.566Z pid=7012] SDK k_ESteamNetworkingSocketsDebugOutputType_Msg: Got SDR network config.  Loaded revision 1793064244 OK
[2026-10-31 22:49:48.566Z pid=7012] SDK k_ESteamNetworkingSocketsDebugOutputType_Msg: Performing ping measurement
[2026-10-31 22:49:48.566Z pid=7012] SDK k_ESteamNetworkingSocketsDebugOutputType_Msg: SDR RelayNetworkStatus:  avail=Attempting  config=OK  anyrelay=Attempting   (Performing ping measurement)
[2026-10-31 22:49:48.566Z pid=7012] SDK k_ESteamNetworkingSocketsDebugOutputType_Msg: AuthStatus (steamid:7656119XXXXXXXXXX):  OK  (OK)
[2026-10-31 22:49:48.652Z pid=7012] SDK k_ESteamNetworkingSocketsDebugOutputType_Verbose: Communications with routing cluster 'fra' established.
[2026-10-31 22:49:48.664Z pid=7012] SDK k_ESteamNetworkingSocketsDebugOutputType_Verbose: Communications with routing cluster 'sto2' established.
[2026-10-31 22:49:48.690Z pid=7012] PROBE callback=k_EResultOK; IPv4 present=True; port present=True
[2026-10-31 22:49:48.713Z pid=7012] PROBE final=k_EResultOK; IPv4 present=True; port present=True
[2026-10-31 22:49:48.741Z pid=7012] PROBE shutdown

$ dotnet bin/Debug/net10.0/Probe.dll
[2026-10-31 22:49:52.799Z pid=7077] PROBE start
[2026-10-31 22:49:52.815Z pid=7077] PROBE launched by Steam=False; SteamAppId=-; SteamGameId=-
[2026-10-31 22:49:52.815Z pid=7077] PROBE cwd=/tmp/steam-fakeip-probe; args=
[S_API] SteamAPI_Init(): Loaded '/Users/redacted/Library/Application Support/Steam/Steam.AppBundle/Steam/Contents/MacOS/steamclient.dylib' OK.
Setting breakpad minidump AppID = 480
SteamInternal_SetMinidumpSteamID:  Caching Steam ID:  7656119XXXXXXXXXX [API loaded no]
[2026-10-31 22:49:52.867Z pid=7077] PROBE init=k_ESteamAPIInitResult_OK;
[2026-10-31 22:49:52.868Z pid=7077] PROBE app=480
[2026-10-31 22:49:52.870Z pid=7077] PROBE auth=k_ESteamNetworkingAvailability_Attempting
[2026-10-31 22:49:52.871Z pid=7077] PROBE initial=k_EResultNoMatch; IPv4 present=False; port present=False
[2026-10-31 22:49:52.872Z pid=7077] PROBE begin=True
[2026-10-31 22:49:53.080Z pid=7077] SDK k_ESteamNetworkingSocketsDebugOutputType_Verbose: Got cert for steamid:7656119XXXXXXXXXX from Steam
[2026-10-31 22:49:53.080Z pid=7077] SDK k_ESteamNetworkingSocketsDebugOutputType_Msg: Certificate expires in 40h18m at 1793632101 (current time 1793486991), will renew in 38h18m
[2026-10-31 22:49:53.084Z pid=7077] PROBE callback=k_EResultFail; IPv4 present=False; port present=False
[2026-10-31 22:49:53.105Z pid=7077] PROBE final=k_EResultFail; IPv4 present=False; port present=False
[2026-10-31 22:49:53.108Z pid=7077] PROBE shutdown
Langage dominant
C++
Étoiles
10k
Forks
772
Métriques de merge des PR
Aucune PR mergée en 30 j

Préparer son environnement

Ce projet ne fournit ni conteneur de développement, ni Dockerfile, ni guide de contribution : l'installation est à votre charge. Commencez par son README, et consultez notre guide de la première contribution pour les étapes générales.

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de ValveSoftware/GameNetworkingSockets

Toutes les issues de ValveSoftware/GameNetworkingSockets

Issues similaires

Plus d'issues C++

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.